ファクトリメソッドを使ったJFreeChartクラスのオブジェクト作成

広告

ここまでは使用したいグラフの種類に合わせてPlotクラスのサブクラスのオブジェクトを元にJFreeChartクラスのオブジェクトを作成してきました。今度はユーティリティクラスであるChartFactoryクラスを使ったグラフの作成方法を確認してみます。

ChartFactoryクラスではJFreeChartクラスのオブジェクトを作成するためのファクトリメソッドが数多く用意されています。

ChartFactoryクラスのクラス図は次のように定義されています。

  • java.lang.Object
  • org.jfree.chart.ChartFactorzy
  • public abstract class ChartFactory extends java.lang.Object

コンストラクタは使用せず、各グラフ毎に用意されたスタティックメソッドを使います。次のようなメソッドが用意されています。

createAreaChart
createBarChart
createBarChart3D
createBoxAndWhiskerChart
createBubbleChart
createCandlestickChart
createGanttChart
createHighLowChart
createHistogram
createLineChart
createLineChart3D
createMultiplePieChart
createMultiplePieChart3D
createPieChart
createPieChart3D
createPolarChart
createRingChart
createScatterPlot
createStackedAreaChart
createStackedBarChart
createStackedBarChart3D
createStackedXYAreaChart
createTimeSeriesChart
createWaferMapChart
createWaterfallChart
createWindPlot
createXYAreaChart
createXYBarChart
createXYLineChart
createXYStepAreaChart
createXYStepChart

各メソッドはJFreeChartクラスのオブジェクトを返してくれます。それでは円グラフを作成するための「createPieChart」メソッドを見てみます。

Creates a pie chart with default settings.

The chart object returned by this method uses a PiePlot instance as 
the plot.

Parameters:
  title - the chart title (null permitted).
  dataset - the dataset for the chart (null permitted).
  legend - a flag specifying whether or not a legend is required.
  tooltips - configure chart to generate tool tips?
  urls - configure chart to generate URLs? 
Returns:
  A pie chart.

引数にはタイトルやデータなどの必要な情報を指定してメソッドを実行すると結果としてJFreeChartクラスのオブジェクトを取得できます。なお4番目と5番目の引数はグラフを画像として出力する場合は気にしないで結構です。

実際の使い方は次のようになります。

DefaultPieDataset data = new DefaultPieDataset();
data.setValue("支持する", 56);
data.setValue("支持しない", 41);
data.setValue("未回答", 3);

JFreeChart chart = 
  ChartFactory.createPieChart("Title", data, true, false, false);

数多くのファクトリメソッドが用意されていますので、ほとんどの場合はChartFactoryクラスの各メソッドを使ってJFreeChartクラスのオブジェクトを作成することになります。

サンプルプログラム

では簡単なサンプルを作成して試してみます。

Test4_1.java

import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartFactory;
import org.jfree.data.general.DefaultPieDataset;

import org.jfree.chart.ChartUtilities;
import java.io.File;
import java.io.IOException;

public class Test4_1{
  public static void main(String[] args) {
    DefaultPieDataset data = new DefaultPieDataset();
    data.setValue("支持する", 56);
    data.setValue("支持しない", 41);
    data.setValue("未回答", 3);

    JFreeChart chart = 
      ChartFactory.createPieChart("Title", data, false, false, false);

    File file = new File("./test4_1.png");
    try {
      ChartUtilities.saveChartAsPNG(file, chart, 300, 300);
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

上記をコンパイルした後で実行すると次のように表示されます。

ファクトリメソッドを使ったJFreeChartクラスのオブジェクト作成

今回も作成したJFreeChartクラスのオブジェクトを使って作成したグラフをPNG画像として保存しています。プログラムを実行すると「test4_1.png」と言うファイルが作成されています。

ファクトリメソッドを使ったJFreeChartクラスのオブジェクト作成

今回はタイトルも表示されています。逆に凡例は非表示としました。前のページのグラフと見比べて見てください。

( Written by Tatsuo Ikura )