2012-09-12 45 views
0

我使用prefuse最近做出一些可视化。我要做的就是 我从数据库加载一些信息,做出prefuse表实例为他们 ,并根据这些信息的图表。这工作正常。Prefuse API的Java创建边缘

我的问题是我怎样才能创建该图边缘?

我想我必须创建另一个表来保存边缘,但我不知道 创建这个东西的方式......任何帮助表示赞赏!谢谢!

这是我为代码图形设置数据

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); 

回答

0

有一个prefuse图,它接受一个边缘表,正如你提到的构造函数:

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,索引indicies到节点表中。创建列:

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。这将使您的生活更轻松,因为您可以像使用内置图形阅读器一样使用新课程。