Webアプリ開発エンジニアのための技術情報サイト「テックスコア」

2. 簡単なグラフの作成と表示

2006.01.30 株式会社四次元データ 鈴木 圭

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

これを実行すると次のようなウィンドウが表示されます。

サンプルプログラム

グラフを表示するまでの大まかな手順は次のようになります。

  1. グラフを作成する。
  2. Layout と Renderer を作成する。
  3. VisualizationViewer を作成する。
  4. VisualizationViewer を JFrame などに貼り付ける。

それではグラフの作成から表示までを、順を追って解説していきます。



前のページへ TECHSCOREのTOPページへ 次のページへ
TECHSCORE PR
PR
PR
PR
PR
PR

techscore(トップページへ)
TECHSCORE書店
TECHSCOREトップページJavaSQLXMLリッチクライアントモデリングセマンティックWebその他技術Tuigwaa