グラフの描画領域

広告

グラフ全体を表すJFreeChartクラスのオブジェクトの中にはグラフのタイトルやグラフの凡例の他に実際にグラフが描かれる描画領域が含まれます。グラフの描画領域はPlotクラスを使用します。

Plotクラスのクラス図は次のようになっています。

  • java.lang.Object
  • org.jfree.chart.plot.Plot
  • public abstract class Plot extends java.lang.Object implements AxisChangeListener, DatasetChangeListener, MarkerChangeListener, LegendItemSource, org.jfree.util.PublicCloneable, java.lang.Cloneable, java.io.Serializable

PlotクラスはAbstractクラスですので、実際にはグラフの種類毎に用意されているサブクラスを使用します。用意されているサブクラスには次のようなものがあります。

CategoryPlot
CompassPlot
ContourPlot
DialPlot
FastScatterPlot
MeterPlot
MultiplePiePlot
PiePlot
PolarPlot
SpiderWebPlot
ThermometerPlot
WaferMapPlot
XYPlot

ここでは例として円がラフを作成してみます。円グラフの場合は「PiePlot」クラスを使用します。(PiePlotクラスについての詳細は別のページで行います)。

PiePlotクラスのコンストラクタの1つは次のようになっています。

Creates a plot that will draw a pie chart for the specified dataset. 

Parameters:
  dataset - the dataset (null permitted).

引数にはグラフの元になるデータを表すPieDatasetインターフェースを実装したクラス(例えばDefaultPieDatasetクラス)のオブジェクトを指定します。(データについては次のページの「グラフのデータ」を参照して下さい)。

実際には次のように記述します。

DefaultPieDataset data = new DefaultPieDataset();
PiePlot plot = new PiePlot(data);
JFreeChart chart = new JFreeChart(plot);

上記ではグラフのデータを表すDefaultPieDatasetクラスのオブジェクトを作成し、そのオブジェクトを引数に指定してPiePlotクラスのオブジェクトを作成します。そして今度はPiePlotクラスのオブジェクトを引数にしてJFreeChartクラスのオブジェクトを作成します。

サンプルプログラム

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

Test2_1.java

import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.general.DefaultPieDataset;

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

public class Test2_1{
  public static void main(String[] args) {
    DefaultPieDataset data = new DefaultPieDataset();
    JFreeChart chart = new JFreeChart(new PiePlot(data));

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

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

グラフ領域

「File」から下の行はまだ解説していませんが、作成したJFreeChartクラスのオブジェクトを使って作成したグラフをPNG画像として保存するためのものです。プログラムを実行すると「test2_1.png」と言うファイルが作成されています。

グラフ領域

まだグラフのデータなどを指定していませんので枠が表示されているだけです。

( Written by Tatsuo Ikura )