目次 ⇒ 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.plot.Plot;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYBarRenderer;
import org.jfree.data.xy.DefaultIntervalXYDataset;
/**
■ JFreeChart-XYインターヴァルチャート-平面上に四角の領域を描く-DefaultIntervalXYDatasetを使用
・XYインターヴァルチャートは平面上に複数の四角が描かれるもの.
・例えば地図上に建物面積に応じた四角が表示されているようなチャートである.
・DatasetはDefaultIntervalXYDatasetを使用する.
・Rendererには、XYBarRendererを使用する.
・DefaultIntervalXYDataset
・DefaultIntervalXYDatasetはdouble[6][N]のデータを要求する.その内容は次の通り
・[0][N]:x値
・[1][N]:xStart値
・[2][N]:xEnd値
・[3][N]:y値
・[4][N]:yStart値
・[5][N]:yEnd値
・"start","end"という名称に具体的な意味はない.単に名称.
・xStart,xEnd,yStart,yEndで四角領域が表示される.
・x値、y値は表示には使用されない.CrossHairValueとして使用される.
・注意、上記のことはAPIには書かれておらず、ソースを見て、実際に使って分かったことなので注意.
*/
public class Chart14_00 {
// 目次-インターヴァルチャート-IntervalChart-DefaultIntervalXYDatasetを使用したもの
A_Chart14 a_Chart14;
// 目次-Artery-JFreeChart用のライブラリ
A_Chart00 a_LibChartSampeContents;
public static void main(String[] args) {
// DefaultIntervalXYDatasetの生成
DefaultIntervalXYDataset ds;
{
ds = new DefaultIntervalXYDataset();
double[][] values = new double[][] {
new double[]{2.0D,3.0D,4.5D}, // x
new double[]{1.9D,2.9D,4.4D}, // xStart
new double[]{2.2D,3.1D,4.6D}, // xEnd
new double[]{2.5D,3.5D,4.5D}, // y
new double[]{2.4D,2.5D,3.5D}, // yStart
new double[]{2.7D,4.0D,4.0D}, // yEnd
};
ds.addSeries("A",values);
values = new double[][] {
new double[]{0.8D,2.5D,5.0D}, // x
new double[]{0.9D,2.6D,4.9D}, // xStart
new double[]{1.2D,2.7D,5.1D}, // xEnd
new double[]{4.5D,3.5D,3.1D}, // y
new double[]{4.4D,3.5D,3.0D}, // yStart
new double[]{4.7D,3.0D,3.2D}, // yEnd
};
ds.addSeries("B",values);
}
//
XYBarRenderer renderer = new XYBarRenderer ();
renderer.setUseYInterval(true); // これを指定しないと単なる縦棒になってしまう⇒Xには同様の指定はない
renderer.setShadowVisible(false); // 標準はtrue⇒影が表示される
// Plotを作成して画面を表示する
XYPlot plot = new XYPlot(ds,new NumberAxis(),new NumberAxis(),renderer);
JFreeChart jfreeChart = new JFreeChart("XYインターヴァルチャート",(Plot)plot);
ChartFrame cFrame = new ChartFrame("XYインターヴァルチャート",(JFreeChart)jfreeChart);
cFrame.pack();
cFrame.setVisible(true);
}
}