0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

JFreeChart/バブルチャート/BubbleChart-DefaultXYZDatasetの作成

Posted at

目次 ⇒ JFreeChartサンプル

package jp.avaj.lib.chart;

import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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;

import jp.avaj.lib.algo.ArMap;

/**
■ JFreeChart/バブルチャート/BubbleChart-DefaultXYZDatasetの作成
・X,Yの位置と円の大きさがあるので、DefaultXYZDatasetを使用する.z値がバブルの大きさとなる.
・DefaultXYZDatasetはMap<T0,List<T1>>やArListOnMap<T0,T1>から作成することができる.
・この例ではMap<T0,List<T1>>から作成する.

 */
public class Chart10_02 {
  // 目次-バブルチャート(BubbleChart)
  A_Chart10 a_Chart10;
  // 目次-Artery-JFreeChart用のライブラリ
  A_Chart00 a_LibChartSampeContents;

  public static void main(String[] args) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
    // 表示データの作成
    Map<String,List<Chart10_02_Data>> listOnMap = createData();
    // DefaultXYZDatasetを生成する
    DefaultXYZDataset dataSet;
    {
      // カテゴリキーを変換する(bをBに)⇒不要ならばnullにする
      Map<String,String> names = ArMap.construct("b=B");
      // DefaultXYZDataset,フィールド名を指定する
      dataSet = ArcDefaultXYZDataset.create(listOnMap,names,"x","y","z");
    }
    // レンダラの指定⇒バブルチャート用のレンダラがある、引数は下記のものがあるが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);
  }
  /** テストデータを作成する */
  private static Map<String,List<Chart10_02_Data>> createData() {
    Map<String,List<Chart10_02_Data>> listOnMap = new HashMap<String,List<Chart10_02_Data>>();
    List<Chart10_02_Data> list;
    {
      list = new ArrayList<Chart10_02_Data>();
      list.add(new Chart10_02_Data(2.1D,14.1D,2.4D));
      list.add(new Chart10_02_Data(2.3D,11.1D,2.7D));
      list.add(new Chart10_02_Data(2.3D,10.0D,2.7D));
      list.add(new Chart10_02_Data(2.2D,8.0D,2.2D));
      list.add(new Chart10_02_Data(2.2D,8.1D,2.2D));
      list.add(new Chart10_02_Data(1.8D,8.4D,2.2D));
      list.add(new Chart10_02_Data(1.8D,5.4D,2.1D));
      list.add(new Chart10_02_Data(1.9D,4.1D,2.2D));
      list.add(new Chart10_02_Data(2.3D,4.1D,1.6D));
      list.add(new Chart10_02_Data(3.8D,25.0D,4.0D));
      listOnMap.put("A",list);
    }
    {
      list = new ArrayList<Chart10_02_Data>();
      list.add(new Chart10_02_Data(3.1D,20.1D,2.4D));
      list.add(new Chart10_02_Data(0.3D,11.1D,2.7D));
      list.add(new Chart10_02_Data(1.7D,10.0D,2.7D));
      list.add(new Chart10_02_Data(0.2D,8.0D,2.2D));
      list.add(new Chart10_02_Data(1.2D,8.1D,2.2D));
      list.add(new Chart10_02_Data(0.8D,8.4D,2.2D));
      list.add(new Chart10_02_Data(0.8D,5.4D,2.1D));
      list.add(new Chart10_02_Data(0.9D,4.1D,2.2D));
      list.add(new Chart10_02_Data(0.3D,4.1D,1.6D));
      list.add(new Chart10_02_Data(2.8D,20.0D,4.0D));
      listOnMap.put("b",list);
    }
    return listOnMap;
  }
  /** データ格納用のクラス. */
  public static class Chart10_02_Data {
    public Chart10_02_Data(double x,double y,double z) {
      this.x = x;
      this.y = y;
      this.z = z;
    }
    private double x;
    private double y;
    private double z;
    public double getX() {
      return x;
    }
    public void setX(double x) {
      this.x = x;
    }
    public double getY() {
      return y;
    }
    public void setY(double y) {
      this.y = y;
    }
    public double getZ() {
      return z;
    }
    public void setZ(double z) {
      this.z = z;
    }
  }
}

無題.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?