グラフの視覚化のためにJungライブラリを使い始めました。現在の主な問題は、頂点にラベルやメタデータを設定する方法がわかりません。頂点の特定の属性に応じて、頂点の色を別にしたいと思います。 Nodeクラスのオブジェクトには追加のInteger-valueが含まれています。頂点の追加属性(getGroup()による)として追加したいと思います。次のコードは、各ノードのgetId() - 文字列を可視化します。Jungライブラリを使った頂点のラベル
任意の勧告?
この
あるメインクラスで私の次のコード:Graph<String,Double> g = new SparseGraph<String,Double>();
List<Link> linkList = new ArrayList<Link>();
List<Node> nodeList = new ArrayList<Node>();
linkList = f.getLinks();
nodeList = f.getNodes();
for(Node nodeElement:nodeList){
g.addVertex(nodeElement.getId());
}
for(Link linkElement:linkList){
g.addEdge(linkElement.getValue(), linkElement.getSource(), linkElement.getTarget());
}
VisualizationImageServer vs =
new VisualizationImageServer(
new SpringLayout(g), new Dimension(500, 500));
vs.getRenderContext().setVertexLabelTransformer(new ToStringLabeller() {
public String transform(Object v) {
return Integer.toString(((Node)v).getGroup());
}
});
JFrame frame = new JFrame("");
frame.getContentPane().add(vs);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
(
ToStringLabeller()
は、Java 8 :)に先行、言うまでもなく)ありがとう。私は最新バージョンのJung 2.1.1を使用しています。私は新しい機能を定義するために関数applyを実装(オーバーライド)しました。今は動作しますが、約500ノードのパフォーマンスで8GBのRAMノートブックに問題が発生します。 – Matzka