JUNG图形可视化中的顶点标签

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

如何为顶点和边添加标签?值存储在我的自定义顶点类中。我可以遍历布局或BasicVisualizationServer中的所有顶点并添加标签吗?

谢谢您的帮助!

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将实时更新它们。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接