0

我最近正在使用 prefuse 进行一些可视化。我所做的是从数据库中加载一些信息,为它们制作一个 prefuse 表实例,并根据该信息制作一个图表。这工作正常。

我的问题是如何为该图创建边缘

我想我必须创建另一个表来保持边缘,但我不知道创建那个东西的方法......感谢任何帮助!谢谢!

这是我为图表设置数据的代码:

    Table nodeData = null;
    String query1 = "my_select_statement";

    try {
        nodeData = datasrc.getData(query1);

    } catch (DataIOException ex) {
        ex.getMessage();
        ex.printStackTrace();
    }

Graph graph = new Graph(nodeData, true);
4

1 回答 1

0

正如您所建议的,有一个带有边缘表的 prefuse Graph 的构造函数:

public Graph(Table nodes, Table edges, boolean directed)

我建议您查看这个非常简单的空格分隔矩阵阅读器以供参考: https ://github.com/brycecr/msmexplorer/blob/master/MSMExplorer/src/edu/stanford/folding/msmexplorer/io/DatGraphReader.java

简而言之,您只需要创建一个表,但您需要“源”和“目标”列,其中这些列中的条目是节点表中的 0 索引索引。创建列:

m_edgeTable = new Table();
m_edgeTable.addColumn(Graph.DEFAULT_SOURCE_KEY, int.class); //0th
m_edgeTable.addColumn(Graph.DEFAULT_TARGET_KEY, int.class); //1st

分配源和目标列:

m_edgeTable.addRow();
m_edgeTable.set(rowNum, 0, sourceNodeIndex);
m_edgeTable.set(rowNum, 1, targetNodeIndex);

你的想法是对的!

PS:如果你正在编写一个图形阅读器,就像你看起来的那样,我真的推荐 subclassing AbstractGraphReader。这将使您的生活更轻松,因为您可以像使用内置图形阅读器一样使用新课程。

于 2012-09-19T00:50:26.937 回答