JFreeChart-XY 대륙간도 - 평면에 직사각형 영역 그리기 - DefaultIntervalXYDataset 사용

카탈로그
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);
  }
}

JFreeChart 샘플

좋은 웹페이지 즐겨찾기