ファイヤープロジェクト
HighLowOpenCloseグラフの作成(JFreechart 0.9.16)
2004-02-12T22:00+09:00   matsu
JFreeChartを使用してHighLowOpenCloseグラフを作成してみた.HighLowOpenCloseグラフは,ある閾値XinからXoutの代表値Xに対して最大(max(f(x)),{x|Xin <= x <= Xout}),最小(min(f(x)),{x|Xin < x <= Xout}),入値(f(Xin)),出値(f(Xout))を表示するグラフである.
本頁で作成するグラフはJFreeChartを便宜上HigwLowChartと呼ぶ.HighLowChartがどんなものかを示すために,いきなりサンプルの出力PNGを示してみる.
ではサンプルのソース.
今回の主な登場クラスを整理しておく.
今回は新たにRendererを紹介する.RendererはPlotに保持されており,描画方法に関する情報と実行メソッドを持っている.詳細は後述.さて,今回のサンプルでは,以下の三つのメソッドでJFreeChartがらみの処理を行なっている.
  • workHighLowChart
  • getHighLowChart
  • configHighLowChart
workHighLowChartは棒グラフの頁のサンプルとほとんど同じであるので,本頁では説明を省略する.
サンプルでは,HighLowChartの作成をgetHighLowChartメソッド内で行なっている.表示データはcreateHighLowDatasetメソッドで作成している.createHighLowDatasetメソッドでは,HighLowDatasetのサブクラスであるDefaultHighLowDatasetを作成して返す.
return new DefaultHighLowDataset("SampleHihLowData", date, high, low, open, close, value);
最初の引数は表の下部の説明に使用される.DefaultHighLowDatasetは,横軸に時間を取る.これはdouble型の配列である.そして,各時間に対するhigh,low,open,close,valueを渡す.valueの使用のされかたはよくわからない.これもdouble型の配列であり,これら6つの引数は同じインデクスの要素が対応しあっている.横軸に使用されるdateの要素数はかならず他の配列の要素数より小さくなるように注意すること(※).このHighLowDatasetを使用してHighLowChartを作成する.
// HighLowDatasetをデータにしてJFreeChartを作成
JFreeChart highLowChart = ChartFactory.createHighLowChart ("SampleHighLowChart",
							   "timeAxisLabel",
							   "valueAxisLabel",
							   hlData, true);
第一引数は表の題名,第二引数が横軸ラベル,第三引数が縦軸ラベル,第四引数がデータ,第四引数が表の説明の要否である.
※ さもないtNullPointerExceptionが投げられる.
サンプルではconfigHighLowChartメソッドで,グラフの色の設定を行なっている.
XYPlot xyPlot = highLowChart.getXYPlot();
XYItemRenderer xyRenderer = xyPlot.getRenderer();
xyRenderer.setSeriesPaint(0, ChartColor.VERY_DARK_BLUE);
上の三つ目の文が設定箇所である.第一引数はシリーズであり,これによって,複数のグラフを同時に表示するときにも,グラフ毎の色の設定が可能である.第二引数はjava.awt.Paintである.ここではその実装java.awt.Colorを渡している.ChartColorはグラフでよく使用するColorオブジェクトをstaticで保持しているクラスである.たぶん無闇にColorをnewするのを防ぐ意味あいもあるのだろう.
matsu(C)
Since 2002
Mail to matsu