散布グラフの作成(JFreechart 0.9.16)
JFreeChartを使用して散布グラフを作成してみた.
前頁では,座標XYを線で結ぶグラフを作成したが,今回は座標XYをプロットするだけ(線で結ばない)のグラフを作成する.このグラフに対応したJFreeChartを便宜上XYScatterChartと呼ぶ.ではサンプル.
今回の主な登場クラスを整理しておく.
今回は,以下の三つのメソッドでJFreeChartがらみの処理を行なっている.
- workXYScatterChart
- getXYScatterChart
- configXYScatterChart
サンプルでは,XYScatterChartの作成をgetXYScatterChartメソッド内で行なっている.表示データはcreateXYDatasetメソッドで作成している(※).表示データはXYSeriesオブジェクトに格納して,これをXYSeriesCollectionに集める.そこでまずXYSeriesCollectionオブジェクトを作成する.
XYSeriesCollection xySeriesCollection = new XYSeriesCollection();そしてXYSeriesオブジェクトを作成してデータを突っ込む.
XYSeries xySeries; .... xySeries.add(value, 10.0 * value * value + eps * (series + 1.0));第一引数はX値,第二引数はそのX値に対応するY値である.そしてXYSeriesオブジェクトをXYSeriesCollectionオブジェクトに格納する.
xySeriesCollection.addSeries(xySeries);XYLineChartで自作したXYDatasetの実装クラスを参照すれば,XYSeriesCollectionクラス内部で何が起きているかは想像できるだろう.作成したXYDataset(の実装クラスXYSeriesCollection)オブジェクトを使用してChartFactoryでXYLineChartを作成する.
// XYDatasetをデータにしてJFreeChartを作成
JFreeChart xyScatterChart = ChartFactory.createScatterPlot ("SampleXYScatterChart",
"domain",
"range",
xyData, PlotOrientation.VERTICAL,
true, true, true);
引数はcreateXYLineChartと同様である.
※ もちろんXYLineChartのときのように,データ格納クラスを自作することもできる.
サンプルではconfigXYScatterChartメソッドで,プロットと棒グラフの軸に関する設定を行なっている.プロットはXYPlotオブジェクトである.以下はChartFrameを表示して,グラフエリア内の適当な場所でマウスをクリックしたときに,最寄りのプロットに補助線が引かれるように指定する.この補助線の描画指定は,縦横別途に指定可能である.
軸はXYLineChartのXYPlotオブジェクトから取り出す.XYLineChartでは,縦軸,横軸ともに縦軸はValueAxisクラスのサブクラスNumberAxisとなっている.縦軸の取得メソッドはgetDomainAxis,横軸を取得するメソッドはgetRangeAxisである(返り値の型はValueAxisなので,キャストする必要がある).
XYPlot xyPlot = xyScatterChart.getXYPlot(); /* カーソル位置で横方向の補助線をいれる */ xyPlot.setDomainCrosshairVisible(true); /* カーソル位置で縦方向の補助線をいれる */ xyPlot.setRangeCrosshairVisible(true);補助線が引かれたときの画像を以下に示す(※).
XYPlot xyPlot = xyScatterChart.getXYPlot(); ..... /* 横軸の設定 */ NumberAxis xAxis = (NumberAxis)xyPlot.getDomainAxis(); .... /* 縦軸の設定 */ NumberAxis yAxis = (NumberAxis)xyPlot.getRangeAxis();今回は軸のレンジを自動で変更するように設定した.
xAxis.setAutoRange(true); yAxis.setAutoRange(true);....今回は別にわざわざNumberAxisにキャストする必要はなかったな.
※ ChartFrameを表示すると,右クリックで画像の保存や各種色の設定などが行なえる.

