Prefuse API java创建边缘

时间:2012-09-12 22:27:56

标签: java graph prefuse edges

我最近使用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);

1 个答案:

答案 0 :(得分: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

简而言之,您只需要创建一个表,但是您需要“source”和“target”列,其中这些列中的条目是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);

你有正确的想法!

P.S。:如果你正在编写一个图形阅读器,就像你看来的那样,我真的建议继承AbstractGraphReader。它将使您的生活更轻松,因为您可以像使用内置图形阅读器一样使用新课程。