オープンソースコラム


JFreeChart入門 - JFreeChartで折れ線グラフの作成 - その1

2008/03/11 21:43Update
TAGS: JFreeChart | 折れ線グラフ | CategoryDataset

Syboos.jp編集長

JFreeChartのCategoryDatasetで折れ線グラフの作成について解説します。

はじめに


JFreeChartとは:JFreeChart - Javaで書かれたフリーで使える高機能なチャート作成ライブラリ 

JFreeChart入門 - JFreeChartのインストール及びJFreeChartデモの実行 

今回はJFreeChartのCategoryDatasetを使って折れ線グラフを作成してみます。


今回のテスト環境
OS :WindowsXP
Java:jdk1.5.0_06
JFreeChart:1.0.9(2008年3月 最新版)
※JFreeChartはJavaで書かれたライブラリなので、Windows以外のOSでも正常に動きます。
    

JFreeChartで折れ線グラフ(Line Chart)の作成


JFreeChartで折れ線グラフを作成するには、次のようなステップに従えば、非常に簡単に行えます。
ステップ1:CategoryDatasetオブジェクトの作成
ステップ2:DatasetからJFreeChartオブジェクトを作成、設定
ステップ3:ファイルやサーブレットに出力

Javaソース:
CreateJFreeChartLine.java
package com.syboos.demo.jfreechart;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.general.DatasetUtilities;

//JFreeChartで折れ線グラフ(LineChart)を作成 サンプル
public class CreateJFreeChartLine {

    /**
     * JFreeChartで折れ線グラフ(LineChart)を作成
     */
    public static void main(String[] args) {
        // ステップ1:Datasetオブジェクトの作成
        CategoryDataset dataset = createDataset();
        // ステップ2:DatasetからJFreeChartオブジェクトを作成、及び設定
        JFreeChart freeChart = createChart(dataset);
        // ファイルや、Servletに出力
        saveAsFile(freeChart, "c:\\jfreechart\\line.png", 500, 400);
    }

    // ファイルに保存する
    public static void saveAsFile(JFreeChart chart, String outputPath,
            int weight, int height) {
        FileOutputStream out = null;
        try {
            File outFile = new File(outputPath);
            if (!outFile.getParentFile().exists()) {
                outFile.getParentFile().mkdirs();
            }
            out = new FileOutputStream(outputPath);
            // PNGイメージファイルに保存する
            ChartUtilities.writeChartAsPNG(out, chart, 300, 200);
            // JPEGイメージファイルに保存する
            // ChartUtilities.writeChartAsJPEG(out, chart, 500, 400);
            out.flush();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (out != null) {
                try {
                    out.close();
                } catch (IOException e) {
                    // do nothing
                }
            }
        }
    }

    // CategoryDatasetからJFreeChartを作成
    public static JFreeChart createChart(CategoryDataset categoryDataset) {
        // 折れ線グラフを作成するためのJFreeChartオブジェクトの生成:ChartFactory.createLineChart
        JFreeChart jfreechart = ChartFactory.createLineChart("Line Chart Demo", // タイトル
                "年分", // categoryAxisLabel (カテゴリ軸、横軸、X軸のラベル)
                "数量", // valueAxisLabel(ヴァリュー軸、縦軸、Y軸のラベル)
                categoryDataset, // dataset
                PlotOrientation.VERTICAL, true, // legend
                false, // tooltips
                false); // URLs

        // 以下の設定は省略しても構いません。
        // 出力される円グラフの透明度、境界線の色/有無などの設定を行う:クラスPlot(折れ線グラフはCategoryPlot)
        CategoryPlot plot = (CategoryPlot) jfreechart.getPlot();
        // 背景色 透明度
        plot.setBackgroundAlpha(0.5f);
        // 前景色 透明度
        plot.setForegroundAlpha(0.5f);
        // その他設定は CategoryPlotを参照

        return jfreechart;
    }

    /**
     * CategoryDatasetオブジェクトの作成。
     * 
     * 折れ線グラフ(LineChart)を作成するために、CategoryDatasetを用意します。
     */
    public static CategoryDataset createDataset() {

        String[] rowKeys = { "One", "Two", "Three" };
        String[] colKeys = { "1987", "1997", "2007" };

        double[][] data = { { 50, 20, 30 }, { 20, 10D, 40D },
                { 40, 30.0008D, 38.24D }, };

        // または以下のようなコード
        // DefaultCategoryDataset categoryDataset = new
        // DefaultCategoryDataset();
        // categoryDataset.addValue(10, "rowKey", "colKey");

        return DatasetUtilities.createCategoryDataset(rowKeys, colKeys, data);
    }
}


コンパイル及び実行
次のようなコマンドでコンパイル及び実行を行います。
C:\Work\Download\JFreeChart\demos>javac -classpath .;jcommon-1.0.12.jar;jfreechart-1.0.9.jar com/syboos/demo/jfreechart/CreateJFreeChartLine .java

C:\Work\Download\JFreeChart\demos>java -classpath .;jcommon-1.0.12.jar;jfreechart-1.0.9.jar  com.syboos.demo.jfreechart.CreateJFreeChartLine

C:\Work\Download\JFreeChart\demos>

※C:\Work\Download\JFreeChart\demosの構成は次のようになります:
jcommon-1.0.12.jar
jfreechart-1.0.9.jar
com\
   syboos\
         demo\
             jfreechart\
                       CreateJFreeChartLine.java


ファイルC:\jfreechart\line.pngが作成されます。

≪図1≫

Sponsored Link