Jung Graphの視覚化にカスタムVertexラベルを追加する方法は?
-
27-10-2019 - |
質問
カスタム頂点ラベルの使用方法 ユング グラフの視覚化?
私はフォローしています Jung 2.0チュートリアル 私がそれを見つけたところ setVertexLabelTransformer()
頂点のラベルを付けるために使用できますが、これらのラベルをカスタマイズすることはできません。
たとえば、以下のコードは3つの頂点を生成し、頂点1,2,4を備えています。
import edu.uci.ics.jung.algorithms.layout.CircleLayout;
import edu.uci.ics.jung.algorithms.layout.Layout;
import edu.uci.ics.jung.graph.Graph;
import edu.uci.ics.jung.graph.SparseMultigraph;
import edu.uci.ics.jung.visualization.BasicVisualizationServer;
import java.awt.Dimension;
import javax.swing.JFrame;
public class SimpleGraphView {
Graph<Integer, String> g;
public SimpleGraphView() {
g = new SparseMultigraph<Integer, String>();
g.addVertex((Integer)1);
g.addVertex((Integer)2);
g.addVertex((Integer)4);
}
public static void main(String[] args) {
SimpleGraphView sgv = new SimpleGraphView();
Layout<Integer, String> layout = new CircleLayout(sgv.g);
layout.setSize(new Dimension(800,800));
BasicVisualizationServer<Integer,String> vv =
new BasicVisualizationServer<Integer,String>(layout);
vv.setPreferredSize(new Dimension(850,850));
JFrame frame = new JFrame("Simple Graph View");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(vv);
frame.pack();
frame.setVisible(true);
}
}
「Q0」のようなラベルを追加するにはどうすればよいですか?
解決
のジェネリックを定義したので SparseMultigraph<V, E>
なので SparseMultigraph<Integer, String>
ジェネリック V
整数としての頂点、およびエッジの汎用e String
, 、したがって、各頂点のラベル値があります Integer
そして、各エッジのラベル String
. 。したがって、Q1、V2などの名前で各頂点が必要な場合は、使用してください。 String
ジェネリック用 V
, 、そのため、このような頂点名を渡すことができます g.addVertex("q1");
他のヒント
ノードのカスタムクラスがある場合は、プロジェクトの例を挙げます。私は次のようなクラスノードを持っています:
public class Node
{
public long tweetId = 0L;
public long nodeId = 0L;
public String screenName = "";
public Date reTweetDate = new Date();
public boolean isMainNode = false;
public int size = 0;
public Node()
{
}
}
//以下のように変換をオーバーライドする必要があります:
vv.getRenderContext().setVertexLabelTransformer(new ToStringLabeller() {
@Override
public String transform(Object v) {
return ((Node)v).screenName;
}});
//グラフ内の各ノードのラベルとしてScreenNameプロパティを表示します。 //これがあなたが探しているものであることを願っています。
所属していません StackOverflow