ファイヤープロジェクト
チャートのSVG出力(JFreechart 1.0.0-pre2)
2005-05-22T00:30+09:00   matsu
JFreeChartはGraphics2Dに対して描画できる.そしてApacheプロジェクトのbaticはGraphics2DのサブクラスであるSVGGraphics2Dを入力としてSVGを出力できる.両者のI/Fがつながるので,両者を単純に使用するだけでチャートをSVGで出力することができる.
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.jar
antタスク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出力する.
以上,JFreeChartはGraphics2Dに出力でき,SVGジェネレータはGraphics2Dのサブクラスであることから,両者は容易に連係でき,実際ChartをSVG出力できることが確認できる.
matsu(C)
Since 2002
Mail to matsu