Jung Graph Visualizationの頂点ラベル
-
17-09-2020 - |
質問
私は小さなグラフビジュアライザークラスを書きました:
public void simpleGraph(SparseMultigraph<Vertex,SEdge> graph, String name) {
Layout<Vertex, SEdge> layout = new ISOMLayout(graph);
layout.setSize(new Dimension(800,800));
BasicVisualizationServer<Vertex, SEdge> vv = new BasicVisualizationServer<Vertex, SEdge>(layout);
vv.setPreferredSize(new Dimension(850,850)); //Sets the viewing area size
JFrame frame = new JFrame(name);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(vv);
frame.pack();
frame.setVisible(true);
}
.
頂点とエッジのラベルを追加する方法値は私のカスタム頂点クラスに保存されます。レイアウトまたはBasicVisualizationServer内のすべての頂点を繰り返し、ラベルを追加できますか?
あなたの助けをありがとう!
解決
あなたの頂点/エッジのためにラベルトランスフォーマーを呼び出す必要があります:
vv.getRenderContext().setVertexLabelTransformer(new ToStringLabeller());
.
これはあなたがサンプルにかなりしばしば見つかることがあるものです。Labelを指定するには、頂点クラスのToString()メソッドを使用します。
わずかに関与する例:
vv.getRenderContext().setEdgeLabelTransformer(new Transformer<MyEdge, String>() {
public String transform(MyEdge e) {
return (e.toString() + " " + e.getWeight() + "/" + e.getCapacity());
}
});
.
エッジを繰り返す必要はありません。EdgelabelTransformerまたはVertExLabelTransformerは、エッジのラベルを付け、そのプロパティが更新されたときに、VisualizationViewerがその場でそれらを更新します。
所属していません StackOverflow