グラフのデータ

広告

グラフの領域には様々な設定が行えますが、まず行うのはグラフのデータの設定です。PiePlotクラスのコンストラクタの引数には円グラフのデータを表すPieDatasetインターフェースを実装したクラスのオブジェクトを指定します。

PieDatasetインターフェースは次のように定義されています。

public interface PieDataset extends KeyedValues, Dataset

PieDatasetインターフェースを実装したクラスは次のようなものがあります。

CategoryToPieDataset
DefaultKeyedValuesDataset
DefaultPieDataset
JDBCPieDataset

ここでは例として「DefaultPieDataset」クラスを使ってみます。

DefaultPieDatalotクラス

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

  • java.lang.Object
  • org.jfree.data.general.AbstractDataset
  • org.jfree.data.general.DefaultPieDataset
  • public class DefaultPieDataset extends AbstractDataset implements PieDataset, java.lang.Cloneable, org.jfree.util.PublicCloneable, java.io.Serializable

用意されているコンストラクタは次の2つです。

コンストラクタ
DefaultPieDataset()
Constructs a new dataset, initially empty.
DefaultPieDataset(KeyedValues data)
Creates a new dataset by copying data from a KeyedValues instance.

2番目は他のデータからデータをコピーして使用する場合のコンストラクタです。では1番目のコンストラクタを確認してみます。

Constructs a new dataset, initially empty. 

引数にはグラフの元になるデータを表すPieDatasetインターフェースを実装したクラス(例えばDefaultPieDatasetクラス)のオブジェクトを指定します。

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

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

データの登録

DefaultPieDatasetクラスのオブジェクトを作成したら、グラフのデータを登録して行きます。DefaultPieDatasetクラスで用意されている「setValue」メソッドを使います。

Sets the data value for a key and sends a DatasetChangeEvent to all 
registered listeners.

Parameters:
  key - the key (null not permitted).
  value - the value. 
Throws:
  java.lang.IllegalArgumentException - if key is null.

「setValue」メソッドでは2つの引数を指定します。グラフの項目となる「key」と、その項目の値である「value」です。1番目の引数である「java.lang.Comparable」はインターフェースであり実装したクラスとしては「Integer」クラスや「String」クラスがあります。

例えば次のように記述します。

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

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

この場合は3つのデータを持つ円グラフを作成しています。

サンプルプログラム

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

Test3_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 Test3_1{
  public static void main(String[] args) {
    DefaultPieDataset data = new DefaultPieDataset();
    data.setValue("支持する", 56);
    data.setValue("支持しない", 41);
    data.setValue("未回答", 3);

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

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

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

グラフのデータ

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

グラフのデータ

追加したデータが円グラフの中に表示されているのと同時に自動的に凡例も作成されて表示されています。

( Written by Tatsuo Ikura )