【问题标题】:Vertex label in JUNG graph visualizationJUNG 图可视化中的顶点标签
【发布时间】:2011-03-18 08:42:06
【问题描述】:

我写了一个小图形可视化类:

    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 中的所有顶点并添加标签吗?

感谢您的帮助!

【问题讨论】:

    标签: java graph visualizer jung


    【解决方案1】:

    您需要为您的顶点/边调用标签转换器:

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

    【讨论】:

      猜你喜欢
      • 2012-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多