JFreeChart-DateAxis

10787 단어 DateAxisJFreeChart
카탈로그
package jp.avaj.lib.chart;

import java.util.Random;

import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.axis.DateTickUnit;
import org.jfree.chart.axis.DateTickUnitType;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.Plot;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.time.Day;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.time.TimeSeriesDataItem;

import jp.avaj.lib.algo.ArDate;

/**
■ JFreeChart-DateAxis
・X値は日時のデータで、その基底クラスはRegularTimePeriod.
・DatasetはTimeSeriesCollectionなどを使用する.注、名称がDatasetではないが、Datasetを実装.

 */
public class Chart18_11 {
  // 目次-時系列データの表示.
  A_Chart15 a_Chart15;
  // 目次-Artery-JFreeChart用のライブラリ
  A_Chart00 a_LibChartSampeContents;

  public static void main(String[] args) {
    // 表示データを作成する
    TimeSeriesCollection ds = createData();
    // レンダラ
    // 最初の引数はラインを引くかどうか⇒今回はラインは引く
    // 次の引数はデータの場所に形を表示するか否か⇒今回は形を表示する.
    XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer(true,true);
    // X軸はDateAxis
    DateAxis xAxis = new DateAxis();
    // 軸の表示単位を設定する,1は一日単位の意味,2にすれば二日ごとに表示する.
    xAxis.setTickUnit(new DateTickUnit(DateTickUnitType.DAY,1));
    NumberAxis yAxis = new NumberAxis();
    // Plotを作成してチャートを表示する
    XYPlot xyPlot = new XYPlot(ds,xAxis,yAxis,(XYItemRenderer)renderer);
    JFreeChart jfreeChart = new JFreeChart("売上推移",(Plot)xyPlot);
    ChartFrame cFrame = new ChartFrame("売上推移",(JFreeChart)jfreeChart);  // (1)
    cFrame.pack();
    cFrame.setVisible(true);
  }
  // 表示データを作成する
  private static TimeSeriesCollection createData() {
    // 商品名の定義
    final String[] items = new String[]{"A","B","C"};
    // 最初の日
    final ArDate startDate = new ArDate(2030,7,1);
    Random ran = new Random();
    TimeSeriesCollection ds = new TimeSeriesCollection();
    for (int item=0; item<items.length; item++) {
      ArDate arDate = (ArDate)startDate.clone();
      // 商品名でTimeSeriesを作成する
      TimeSeries series = new TimeSeries(items[item]);
      for (int day=0; day<5; day++) {
        // 日付をRegularTimePeriodに変換する,RegularTimePeriodの派生クラスはいろいろある.
        Day date = ArcDay.fromArDate(arDate); // DateやCalendarやlongでも可能
        // 売上 ⇒ サンプルなので適当.
        int sales = item*10+ran.nextInt(10);
        // 売上データを作成してSeriesに追加する
        TimeSeriesDataItem dataItem = new TimeSeriesDataItem(date,sales);
        series.add(dataItem);
        // 次の日
        arDate.forward(1);
      }
      // TimeSeriesをTimeSeriesCollectionに追加.
      ds.addSeries(series);
    }
    return ds;
  }
}

JFreeChart 샘플

좋은 웹페이지 즐겨찾기