チャートのSVG出力(JFreechart 1.0.0-pre2)
JFreeChartはGraphics2Dに対して描画できる.そしてApacheプロジェクトのbaticはGraphics2DのサブクラスであるSVGGraphics2Dを入力としてSVGを出力できる.両者のI/Fがつながるので,両者を単純に使用するだけでチャートをSVGで出力することができる.
SVGはSimple Vector Graphicsは,XMLで記述されるベクトル方式の画像フォーマットである.
ビューアにはAdobeのビューアや,ApacheプロジェクトのBatikなどがある.
BatikはさらにSVGを生成するモジュールもあり,今回はそれを使用してJFreeChartの出力をSVGとしてみる.
以前作成したPieChartをBatikを使用してSVG出力するサンプルを作成してみた.
サンプルの実行方法を以下に示す.
$ tar zxvf SVGMaker-0_01.tar.gz $ ant preparelib $ java -jar jfreechartsample.jarantタスクpreparelibでは,サンプルが依存するJFreeChart,Log4J,BatikをHTTPにてダウンロードするが,HTTPプロキシには対応していない. そのような環境の場合は,別途依存jarファイルを入手されたい. 実行すると,カレントディレクトリにchart.svgが出力される.
JFreeChartオブジェクトの作成についてはこれまで記述してきた内容を参照されたい.
サンプルSVGMakerを以下に示す.
ポイントを以下に示す.
- SVGジェネレータの作成
- SVGGraphics2DオブジェクトがSVGジェネレータである.
- Chartの作成
- 出力したいChartを作成する.
- Chartの描画
- JFreeChartはjava.awt.Graphics2Dに対して描画する
void draw(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D area)
というメソッドを持つ. 先述のSVGジェネレータであるSVGGraphics2Dはjava.awt.Graphics2Dのサブクラスであるので,これに出力する. - SVGジェネレータを使用してSVG出力する
- SVGGraphics2Dのstreamというメソッド(いくつかオーバーロードがある)を使用して上で描画したChartをSVG出力する.

