Androidでグラフを表示する方法

今回は、Androidでグラフを表示する方法について、ご紹介します。

グラフ表示を0から作成することも出来ますが、グラフ作成ライブラリを使用する方が簡単です。
Androidで使用できるグラフ作成ライブラリは、下記のようなものがあります。

AFreeChart
AChartEngin
ChartDroid

今回は「AFreeChart」を使用したグラフ作成方法についてです。
「AFreeChart」は有名なJava用グラフ作成ライブラリ「JFreeChart」をAndroid用にカスタマイズしたライブラリです。全てではありませんが、「AFreeChart」を使用していて困った場合は、「JFreeChart」の情報も役に立ちます。<手順概要>
1.ライブラリ(jarファイル)の取得
2.ライブラリをEclipseのプロジェクトに追加(ビルドパスを通す)
3.ライブラリを使用してグラフを作成する<手順詳細>
1.ライブラリ(jarファイル)の取得

リンク先のWebページ上で、【downloads】タグを選択し、リストの中から最新のjarファイルをクリックする。(下図参照)

表示されたページ上でファイル名をクリックすると、ダウンロードが始まります。(下図参照)
適当な場所に保存して下さい。

2.ライブラリをEclipseのプロジェクトに追加(ビルドパスを通す)

2-1.ライブラリファイルを格納するフォルダの作成
グラフを表示したいプロジェクトをEclipse上で右クリックし、[新規(W)]→[フォルダ]をクリックする。
表示されたダイアログのフォルダ名に「lib」と入力し、【完了】ボタンを押下する。
(フォルダ名は任意の名前で良いですが、慣習的に「lib」とすることが多いです)

2-2.ライブラリファイルの格納
2-1で作成したlibフォルダに、1でダウンロードしたjarファイルを、ドラック&ドロップする。

2-3.ビルドパスを通す
プロジェクトを右クリックし、[プロパティ(R)]をクリックする。
表示されるダイアログの左部分で、「Javaのビルド・パス」を選択する。
【ライブラリ(L)】の【外部Jar追加】ボタンを押下する。

表示されたダイアログで、2-2で格納したライブラリファイルを指定する。

3.ライブラリを使用してグラフを作成する

3-1.グラフを表示するためのViewクラスを作成する
下記は450×450の表示領域を持つグラフ表示用のViewクラスのサンプルコードです。

public class ChartView extends View {

    private AFreeChart chart;

    public ChartView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onDraw(Canvas canvas) {

        super.onDraw(canvas);
        RectShape chartArea = new RectShape(0.0, 0.0, 450.0, 450.0);
        this.chart.draw(canvas, chartArea);

    }

    public void setChart(AFreeChart chart) {
        this.chart = chart;
    }
}

3-2.画面レイアウト定義XMLの作成
3-1で作成したグラフ表示用のViewクラスを使用して、画面レイアウト定義XMLを作成します。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <jp.co.psol.ChartSample.ChartView
              android:id="@+id/chart_view"
              android:layout_margin="3dip"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content" />

</LinearLayout>

3-3.グラフにするデータを作成し、AFreeChartオブジェクトを生成する

public class ChartSampleActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {

    	super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        //グラフにするデータの作成
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("朝食", new Integer(390));
        dataset.setValue("昼食", new Integer(500));
        dataset.setValue("夕食", new Integer(900));
        dataset.setValue("間食", new Integer(250));
        dataset.setValue("飲料", new Integer(240));

        //AFreeChartの作成
        AFreeChart chart = ChartFactory.createPieChart(
                "グラフサンプル",        //グラフのタイトル
                dataset,                //グラフにするデータ
                true,
                false,
                false);

        ChartView charview = (ChartView) findViewById(R.id.chart_view);
        charview.setChart(chart);
    }
}

実行結果

以上です。
執筆者:中の人A