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