2. 簡単なグラフの作成と表示2006.01.30 株式会社四次元データ 鈴木 圭
JUNG 2章 簡単なグラフの作成と表示
JUNG を使ってグラフの作成と表示を行う方法について説明します。サンプルプログラムの説明を通して、JUNG に含まれるグラフの作成と表示に関するクラスやインタフェースに触れていきたいと思います。 なお、1章でも述べましたが、当面は「1つのエッジで接続される頂点は常に2つ」であるグラフを扱います。 2.1. サンプルプログラムまず最初に、グラフを作成し表示するだけのサンプルプログラムを紹介します。 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;
public class JungSample extends JFrame {
/**
*
* エントリポイント.
*
* @param args 不使用.
*
*/
public static void main(String[] args) {
JFrame window = new JungSample("JungSample01");
window.setSize(600, 400);
window.setLocationRelativeTo(null);
window.setDefaultCloseOperation(EXIT_ON_CLOSE);
window.setVisible(true);
}
private Graph graph = null;
private Layout layout = null;
private PluggableRenderer renderer = null;
private VisualizationViewer viewer = null;
/**
*
* コンストラクタ.
*
* @param title ウィンドウのキャプション.
*
*/
public JungSample(String title) {
super(title);
setupControls();
}
/**
*
* コントロールのセットアップ.
*
*/
private void setupControls() {
graph = createCompleteUndirectedGraph(8);
layout = new CircleLayout(graph);
renderer = new PluggableRenderer();
viewer = new VisualizationViewer(layout, renderer);
add(viewer);
}
/**
*
* 完全無向グラフを作成する.
* (全ての頂点間にエッジが存在する無向グラフ)
*
* @param vertexCount 頂点数.
*
* @return 作成されたグラフ.
*
*/
private static UndirectedGraph createCompleteUndirectedGraph(int vertexCount) {
UndirectedSparseGraph graph = new UndirectedSparseGraph();
Vertex[] vertices = new Vertex[vertexCount];
// 頂点を作成.
for (int i = 0; i < vertices.length; i++) {
vertices[i] = graph.addVertex(new UndirectedSparseVertex());
}
// エッジを作成.
for (int i = 0; i < vertices.length; i++) {
for (int j = i + 1; j < vertices.length; j++) {
graph.addEdge(new UndirectedSparseEdge(vertices[i], vertices[j]));
}
}
return graph;
}
}
これを実行すると次のようなウィンドウが表示されます。
グラフを表示するまでの大まかな手順は次のようになります。
それではグラフの作成から表示までを、順を追って解説していきます。 |
![]()
![]()
|