*AFreeChart [#idc0dc18]
#contents
AFreeChartのメモ~
AFreeChartはJFreeChartをAndroidで動くようにしたものらしいです。~
なので、AFreeChartで調べてわからないことはJFreeChartで調べても応用が利きます~
AFreeChartは以下から入手可能です。~
http://code.google.com/p/afreechart/
**基本的な使い方 [#r7acc0d1]
といっても時間を軸にするTimeSeriesChartしか扱ったことがないですが^^;~
+データセットのインスタンスを生成
+AFreeChartのインスタンスを目的のグラフを生成するメソッドを呼び出して生成
+グラフの値や表示の設定を行う
こんな感じの流れです。
**AFreeChartにおける折れ線グラフの予備知識 [#c9a5c1da]
X軸、Y軸がありますが、AFreeChartではX軸をDomain、Y軸をRangeと呼ぶようです。~
折れ線グラフの軸の設定を行う場合、getDomainAxis()、getRangeAxis()メソッドでそれぞれの軸を扱うValueAxisインスタンスを取得し、設定を行います。~
(この辺はTimeSeriseChartしかやったことがないので、もしかすると別のグラフだと違うメソッドの可能性もある)~
**TimeSeriseChart [#d4b858c6]
TimeSeriseChartは時間を軸とした折れ線グラフです。~
***グラフの準備 [#a35ceff5]
まずは、AFreeChartのインスタンスを生成する。~
この時に、createTimeSeriesChart()メソッドを使って、TimeSeriseChartを生成する。~
データセットはTimeSeriesCollectionインスタンスを生成して用意する。~
#codeprettify{{
TimeSeriesCollection dataset = new TimeSeriesCollection();
AFreeChart chart = ChartFactory.createTimeSeriesChart(
"タイトル", "X軸のラベル", "Y軸のラベル",
dataset,
true, true,false);
}}
値の追加は、データセットに登録するTimeSeriesのインスタンスに対して行う。~
#codeprettify{{
TimeSeries serias = new TimeSeries("名称");
seriase2.add(時間, 値);
}}
時間の部分には、org.afree.data.timeパッケージに用意されているクラスのインスタンスを設定します。~
**タップした位置の近いプロットに対して補助線を表示する [#rb72f22c]
XYPlotのsetDomainCrosshairVisible()メソッドで横、setRangeCrosshairVisible()メソッドで縦の補助線を表示する設定を行えます。~
また、getDomainCrosshairValue()メソッドで、横方向の値、getRangeCrosshairValue()メソッドで縦方向の値を取得できます。~
***パフォーマンスについて [#qa276b1c]
はっきり言って大量のデータを扱うにはかなりつらいです。~
1分単位で1日分のデータを扱う場合、描画にかなり時間がかかります。~
そのため、いくつかに分割し、フリックやタップ時に次のデータを読み込むような工夫が必要です。~
**参考 [#w5b1ad9e]
-[[JFreeChartを使用したサンプルプログラム3>http://homepage3.moe-nifty.com/lifelicene/2011/03/jfreechart3-378.html]]