6

小さなグラフ ビジュアライザ クラスを作成しました。

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

頂点とエッジにラベルを追加するにはどうすればよいですか? 値は、カスタム頂点クラスに格納されます。Layout または BasicVisualizationServer のすべての頂点を繰り返し処理して、ラベルを追加できますか?

ご協力いただきありがとうございます!

4

1 に答える 1

8

頂点/エッジのラベル トランスフォーマーを呼び出す必要があります。

        vv.getRenderContext().setVertexLabelTransformer(new ToStringLabeller());

これは、サンプルでよく見られるものです。頂点クラスの toString() メソッドを使用して、ラベルを指定します。

もう少し複雑な例:

        vv.getRenderContext().setEdgeLabelTransformer(new Transformer<MyEdge, String>() {
            public String transform(MyEdge e) {
                return (e.toString() + " " + e.getWeight() + "/" + e.getCapacity());
            }
        });

エッジを反復処理する必要はありません。EdgeLabelTransformer または VertexLabelTransformer は、プロパティが更新されたときにエッジにラベルを付け、VisualizationViewer はその場でそれらを更新します。

于 2010-12-03T15:18:11.727 に答える