Vertex label in JUNG graph visualization

I wrote a small graph visualizer class:

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

How to add labels for vertices and edges? Values ​​are stored in my own vertex class. Can I iterate over all the vertices in the layout or BasicVisualizationServer and add labels?

Thank you for your help!

+6
java graph jung visualizer
source share
1 answer

You need to call the label transformer for the vertices / edges:

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

This is what you often find in patterns. It uses the toString () method of your vertex class to specify the label.

A slightly more attractive example:

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

You do not need to iterate over the edges; EdgeLabelTransformer or VertexLabelTransformer will mark your edges when and when their properties are updated, and VisualizationViewer will update them on the fly.

+8
source share

All Articles