レイアウトに関する実験
import javax.swing.JFrame; import edu.uci.ics.jung.graph.Graph; import edu.uci.ics.jung.graph.UndirectedGraph; import edu.uci.ics.jung.graph.Vertex; import edu.uci.ics.jung.graph.impl.UndirectedSparseEdge; import edu.uci.ics.jung.graph.impl.UndirectedSparseGraph; import edu.uci.ics.jung.graph.impl.UndirectedSparseVertex; import edu.uci.ics.jung.visualization.Layout; import edu.uci.ics.jung.visualization.PluggableRenderer; import edu.uci.ics.jung.visualization.VisualizationViewer; import edu.uci.ics.jung.visualization.contrib.CircleLayout; import edu.uci.ics.jung.visualization.SpringLayout; import edu.uci.ics.jung.visualization.FRLayout; public class Sample01 extends JFrame { public static void main(String[] args) { JFrame window = new JFrame("Sample01"); // 疎な無向グラフの作成 Graph graph = new UndirectedSparseGraph(); // 頂点を作成し,グラフに追加 Vertex vertex1 = graph.addVertex(new UndirectedSparseVertex()); Vertex vertex2 = graph.addVertex(new UndirectedSparseVertex()); Vertex vertex3 = graph.addVertex(new UndirectedSparseVertex()); Vertex vertex4 = graph.addVertex(new UndirectedSparseVertex()); // エッジを作成し,グラフに追加 graph.addEdge(new UndirectedSparseEdge(vertex1, vertex2)); graph.addEdge(new UndirectedSparseEdge(vertex2, vertex3)); graph.addEdge(new UndirectedSparseEdge(vertex3, vertex1)); graph.addEdge(new UndirectedSparseEdge(vertex1, vertex4)); // グラフの配置を SpringLayout(ばねモデル)とする Layout layout = new SpringLayout(graph); // グラフの配置を CircleLayout(頂点を円形に配置)とする // Layout layout = new CircleLayout(graph); // グラフの配置を FR レイアウト(Fruchterman-Reingold algorithm)に // 従う //Layout layout = new FRLayout(graph); // Rendererインタフェース(頂点やエッジの描画を担当) PluggableRenderer renderer = new PluggableRenderer(); // VisualizationViewer(グラフを表示するパネル) // JPanel を継承しているため,JFrame に貼り付けることができる. VisualizationViewer viewer = new VisualizationViewer(layout, renderer); // VisualizationViewer を JFrame へ貼り付ける window.add(viewer); // JFrame の各種設定 window.setSize(600, 600); window.setLocationRelativeTo(null); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.setVisible(true); } }
レイアウトには SpringLayout, CircleLayout, FRLayout があるようなので,それぞれ試してみた結果を以下に示す.