目次 ⇒ JFreeChartサンプル
package jp.avaj.lib.chart;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.Plot;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYBubbleRenderer;
import org.jfree.data.xy.DefaultXYZDataset;
import org.jfree.data.xy.XYDataset;
/**
■ JFreeChart-バブルチャート-UIで特定データを強調する
・複数のデータが表示されていると分かりにくいことがある。
・ArcXYPlotEmphasizeWinを使うと、データ選択画面が表示され、特定のデータを強調表示できる.
・強調の方法はArcEmphasizeに定義されており、以下の方法がある。
・ITEM ⇒ ポイントを大きく表示する。
・LINE ⇒ 線を太く表示する。
・BLINK ⇒ ブリンクさせる.該当データを本来の色とグレイで交互表示する。0.5秒ごと。
・本サンプルはバブルチャートなので、BLINKが適当である。
・参考
・DefaultXYZDatasetは以下のメソッドを持っている.
addSeries(java.lang.Comparable seriesKey, double[][] data)
dataはdouble[3][N]は次の構造.
[0][N]:x値
[1][N]:y値
[2][N]:z値
*/
public class Chart10_03 {
// 目次-バブルチャート(BubbleChart)
A_Chart10 a_Chart10;
// 目次-Artery-JFreeChart用のライブラリ
A_Chart00 a_LibChartSampeContents;
public static void main(String[] args) {
// 表示データの作成
DefaultXYZDataset dataSet = new DefaultXYZDataset();
{
// xの値
double[] xValues = { 2.1D, 2.3D, 2.3D, 2.2D, 2.2D, 1.8D, 1.8D, 1.9D, 2.3D, 3.8D};
// yの値
double[] yValues = {14.1D,11.1D,10.0D, 8.0D, 8.1D, 8.4D, 5.4D, 4.1D, 4.1D,25.0D};
// Zの値(円の大きさ)
double[] zValues = { 2.4D, 2.7D, 2.7D, 2.2D, 2.2D, 2.2D, 2.1D, 2.2D, 1.6D, 4.0D};
double[][] arrayOfDouble = {xValues,yValues,zValues};
dataSet.addSeries("A",arrayOfDouble);
}
{
// xの値
double[] xValues = { 3.1D, 0.3D, 1.7D, 0.2D, 1.2D, 0.8D, 0.8D, 0.9D, 0.3D, 2.8D};
// yの値
double[] yValues = {20.1D,11.1D,10.0D, 8.0D, 8.1D, 8.4D, 5.4D, 4.1D, 4.1D,20.0D};
// Zの値(円の大きさ)
double[] zValues = { 2.4D, 2.7D, 2.7D ,2.2D, 2.2D, 2.2D, 2.1D, 2.2D, 1.6D, 4.0D};
double[][] arrayOfDouble = {xValues,yValues,zValues};
dataSet.addSeries("B",arrayOfDouble);
}
// レンダラの指定⇒バブルチャート用のレンダラがある、引数は下記のものがあるがSCALE_ON_RANGE_AXISを指定すること
// (one of: SCALE_ON_BOTH_AXES, SCALE_ON_DOMAIN_AXIS, SCALE_ON_RANGE_AXIS).
XYBubbleRenderer renderer = new XYBubbleRenderer(XYBubbleRenderer.SCALE_ON_RANGE_AXIS);
// X軸,はみ出したりしないためにマージンを設定する、注、Rangeでもよい
// ⇒ LowerMarginは効かないみたい
NumberAxis xAxis = new NumberAxis();
xAxis.setLowerMargin(0.1D);
xAxis.setUpperMargin(0.1D);
// Y軸,はみ出したりしないためにマージンを設定する、注、Rangeでもよい
// ⇒ LowerMarginは効かないみたい
NumberAxis yAxis = new NumberAxis();
yAxis.setLowerMargin(0.1D);
yAxis.setUpperMargin(0.1D);
// PlotはXYPlotを使う
XYPlot xyPlot = new XYPlot((XYDataset)dataSet,(ValueAxis)xAxis,(ValueAxis)yAxis,renderer);
JFreeChart jfreeChart = new JFreeChart("BubbleChart",(Plot)xyPlot);
//
ChartFrame cFrame = new ChartFrame("BubbleChart",(JFreeChart)jfreeChart);
cFrame.pack();
cFrame.setVisible(true);
// UI画面を表示する
new ArcXYPlotEmphasizeWin(cFrame,xyPlot,ArcEmphasize.BLINK);
}
}