TOP設計・移行・活用> 複数のグラフエリアを持つグラフ
オープンソース帳票システム
オープンソース帳票システム

第6回:JFreeChartでグラフ作成(後編)
著者:ビーブレイクシステムズ  横井 朗   2005/4/8
前のページ  1  2  3  4
複数のグラフエリアを持つグラフ

   次に複数のグラフエリアを持つグラフの作成方法について説明します。用途としては「複数軸、複数データセットのグラフ」に似ていますが、同一グラフエリアに重ねたことによってグラフが見にくくなってしまう場合などに使用します。

   図4は今まで見てきたものと多少雰囲気が異なり、出力するグラフ(今回の例では折れ線グラフと棒グラフ)をそれぞれ別のグラフの描画領域として生成します。生成した描画領域をCombinedDomainCategoryPlotで結合し、ChartFactoryからではなく、JFreeChartのコンストラクタからインスタンスを生成しています。
複数のグラフエリアを持つグラフ
図4:複数のグラフエリアを持つグラフ


text  完成版のソースコード
CombinedChartSample.java
  (クリックするとソースコードが表示されます)
// (1)折れ線グラフの生成
NumberAxis lineRangeAxis = new NumberAxis("Value");
lineRangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
LineAndShapeRenderer renderer1 = new LineAndShapeRenderer();
renderer1.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());
CategoryPlot linePlot = new CategoryPlot(lineDataset, null, lineRangeAxis, renderer1);
linePlot.setDomainGridlinesVisible(true);

// (2)棒グラフの作成
NumberAxis barRangeAxis = new NumberAxis("Value");
barRangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
BarRenderer barRenderer = new BarRenderer();
barRenderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());
CategoryPlot barPlot = new CategoryPlot(barDataset, null, barRangeAxis, barRenderer);
barPlot.setDomainGridlinesVisible(true);

CategoryAxis domainAxis = new CategoryAxis("Category");

// (3)グラフの描画領域を生成し、折れ線グラフと棒グラフを追加
CombinedDomainCategoryPlot plot = new CombinedDomainCategoryPlot(domainAxis);
plot.add(linePlot, 3);
plot.add(barPlot, 7);

// (4)Plotを指定してJFreeChartを生成
JFreeChart chart = new JFreeChart(
"Sample Combined Chart",
JFreeChart.DEFAULT_TITLE_FONT,
plot,
true
);
(1)折れ線グラフの生成

   折れ線グラフに対応する"LineAndShapeRenderer"を生成し、"CategoryPlot"でグラフの表示領域を生成します。

(2)棒グラフの作成

   棒グラフに対応する"BarRenderer"を生成し、"CategoryPlot"でグラフの表示領域を生成します。

(3)グラフの描画領域を生成し、折れ線グラフと棒グラフを追加

   生成した折れ線グラフ、棒グラフの表示領域を結合するための"CombinedDomainCategoryPlot"を生成し、それぞれの表示領域を追加します。今回は縦軸方向で結合するため"CombinedDomainCategoryPlot"を使用していますが、横軸方向に結合する場合は"CombinedRangeCategoryPlot"を使用します。

   また、追加時の第2引数はグラフの描画領域の割合をしめしており、今回の場合は折れ線グラフと棒グラフの割合を3対7に設定しています。

(4)Plotを指定してJFreeChartを生成

   最後に"JFreeChart"のインスタンスを生成しますが、今まで見てきたChartFactoryを利用した方法ではなく、JFreeChartのコンストラクタでPlotを指定しています。

まとめ

   今回でJFreeChartに関する説明は終わりですが、いかがでしたでしょうか。次回からは分析用の帳票としても利用可能なPOIという、JavaからExcelやWordを操作するためのライブラリについて説明します。

前のページ  1  2  3  4


ビーブレイクシステムズ
著者プロフィール
株式会社ビーブレイクシステムズ  横井 朗  
オープンソース指向技術コンサルタント。Java専門のソフトウェアハウス〜フリーエンジニアを経て現職。帳票開発のみならず、オープンソースを用いたシステム構築を日々提案。なによりもお客様の真のニーズを求めるため社内外でオープンソースに関する啓蒙活動を行う。


INDEX
第6回:JFreeChartでグラフ作成(後編)
  グラフのカスタマイズ
  グラフ全体のカスタマイズ
  複数軸、複数データセットのグラフ
複数のグラフエリアを持つグラフ