JFreeChart-1.0.10でロウソク足を描く
JfreeChart 1.0.10でのロウソク足は、OHLCSeries というデータセット(エクセルでいう系列に相当)を使う。OHLCSeriesの一つの要素(ある日の四本値)は
で構成される。このうち、時刻に相当する RegularTimePeriod というのが分かりにくかったのでメモ。
RegularTimePeriod は「時間軸で、ある幅を持った単位」の順序関係のあるクラスで、要するにグラフの「日単位」「週単位」「月単位」という「幅を持った」「時刻」をあらわす。
RegularTimePeriod は抽象クラスなので new では生成できず ( 補足: インスタンスを独立して持つ必要がないためシングルトンパターンを使っているのだと思われる ) 、
RegularTimePeriod.createInstance(Day.class, date.getTime(), TimeZone.getTimeZone("JST"));
という形で生成する。
- 第一引数はその時間の単位(即ち時刻の幅、例では日単位)を JFreeChart の Day クラスで指定
- 第二引数は時間軸上の位置をミリ秒で指定
- 第三引数は、第二引数の所属するタイムゾーンを指定
グラフの時間軸に既存の Calendar クラスなどをそのまま使わず、TimePeriod のような「時間の幅」を意識したクラスを用いることで、「前の時刻」、「次の時刻」の計算が容易になるから、というような説明が javadoc に書かれている。実際、四本値は一日や一週間や一月の株価の値動きのことであるから、ある一点の時刻で表すよりは合理的だと考えれば納得できる。
追記 2009-01-13
Matlabのマニュアルを見ていて、Time Series オブジェクトというものがあるのを見つけた。どうやら jFreeChart の一部のデータセットは Matlab を手本に作られているらしい。