JFreeChart-레이더 맵/SPiderWebChart-특정 데이터 강조

카탈로그
package jp.avaj.lib.chart;

import java.awt.BasicStroke;

import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.Plot;
import org.jfree.chart.plot.SpiderWebPlot;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;

import jp.avaj.lib.algo.ArMatrix;
import jp.avaj.lib.algo.ArUtil;

/**
■ JFreeChart-レーダーチャート/SpiderWebChart-特定データの強調

 */
public class Chart06_02 {
  // 目次-レーダーチャート(SpiderWebChart)
  A_Chart06 a_Chart06;
  // 目次-Artery-JFreeChart用のライブラリ
  A_Chart00 a_LibChartSampeContents;

  /** 成績のレーダーチャートを作成する */
  public static void main(String[] args) {
    // レーダーチャート(SpiderWebChart)にはCategoryDatasetを使用する
    // CategoryDatasetの作成方法は、以下を参照
    Chart01_CategoryDataset_2 categoryDataSetSample;
    // ここではArMatrixからCategoryDatasetを作成する
    DefaultCategoryDataset dataset;
    {
      ArMatrix<String,String,Integer> mat = new ArMatrix();
      // Aの成績⇒理系が得意
      mat.put("A","英語",70);
      mat.put("A","数学",90);
      mat.put("A","国語",55);
      mat.put("A","理科",95);
      mat.put("A","社会",45);
      // Bの成績⇒文系が得意
      mat.put("B","英語",100);
      mat.put("B","数学",60);
      mat.put("B","国語",80);
      mat.put("B","理科",55);
      mat.put("B","社会",70);
      // Cの成績
      mat.put("C","英語",70);
      mat.put("C","数学",70);
      mat.put("C","国語",70);
      mat.put("C","理科",70);
      mat.put("C","社会",70);
      //
      dataset = ArcDefaultCategoryDataset.create(mat,null,null);
    }
    // SpiderWebPlotはRendererやRendererは指定する必要がない
    SpiderWebPlot plot = new SpiderWebPlot((CategoryDataset)dataset);
    JFreeChart jfreeChart = new JFreeChart("成績レーダーチャート",(Plot)plot);
    // チャートを表示する
    ChartFrame cFrame = new ChartFrame("RadarChartFrame",(JFreeChart)jfreeChart);
    cFrame.pack();
    cFrame.setVisible(true);
    // 特定データ(B)を強調する
    {
      // 目で確認するために少し休む
      ArUtil.sleep(2000);
      // Bデータのインデックスを取得する
      // Datasetに挿入した順番でよいが、インデックスを改めて取得する方がよい
      int index = dataset.getRowIndex("B");
      // 線幅を太くする
      plot.setSeriesOutlineStroke(index,new BasicStroke(((BasicStroke)plot.getBaseSeriesOutlineStroke()).getLineWidth()*3));
      //
      // 目で確認するために少し休む
      ArUtil.sleep(12000);
      // 元に戻す
      plot.setSeriesOutlineStroke(index,null);
    }
  }
}



JFreeChart 샘플

좋은 웹페이지 즐겨찾기