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: グラフ リーダーを作成している場合は、サブクラス化を強くお勧めしAbstractGraphReaderます。組み込みのグラフ リーダーと同じように新しいクラスを使用できるため、今後の作業が楽になります。

于 2012-09-19T00:50:26.937 に答える