Jfreechart-timeseries-chart

提供:Dev Guides
移動先:案内検索

JFreeChart-時系列チャート

時系列グラフには、等間隔で変化するデータポイントのシーケンスが表示されます。 この章では、JFreeChartを使用して、ビジネスデータの特定のセットから*時系列グラフ*を作成する方法を示します。

ビジネスデータ

標準のJava API * Math.random()*を使用して生成されたさまざまな乱数について考えてみましょう。 これらの数値を使用して、時系列グラフを生成します。 特定の時間間隔でWebサイトで発生したエラーの総数について同様のグラフを生成できます。

AWTベースのアプリケーション

以下は、内部で特定の時間に* Math.random()*によって生成された数値から時系列グラフを作成するコードです。

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.SeriesException;
import org.jfree.data.time.Second;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

public class TimeSeries_AWT extends ApplicationFrame {

   public TimeSeries_AWT( final String title ) {
      super( title );
      final XYDataset dataset = createDataset( );
      final JFreeChart chart = createChart( dataset );
      final ChartPanel chartPanel = new ChartPanel( chart );
      chartPanel.setPreferredSize( new java.awt.Dimension( 560 , 370 ) );
      chartPanel.setMouseZoomable( true , false );
      setContentPane( chartPanel );
   }

   private XYDataset createDataset( ) {
      final TimeSeries series = new TimeSeries( "Random Data" );
      Second current = new Second( );
      double value = 100.0;

      for (int i = 0; i < 4000; i++) {

         try {
            value = value + Math.random( ) - 0.5;
            series.add(current, new Double( value ) );
            current = ( Second ) current.next( );
         } catch ( SeriesException e ) {
            System.err.println("Error adding to series");
         }
      }

      return new TimeSeriesCollection(series);
   }

   private JFreeChart createChart( final XYDataset dataset ) {
      return ChartFactory.createTimeSeriesChart(
         "Computing Test",
         "Seconds",
         "Value",
         dataset,
         false,
         false,
         false);
   }

   public static void main( final String[ ] args ) {
      final String title = "Time Series Management";
      final TimeSeries_AWT demo = new TimeSeries_AWT( title );
      demo.pack( );
      RefineryUtilities.positionFrameRandomly( demo );
      demo.setVisible( true );
   }
}

上記のJavaコードを TimeSeries_AWT.java ファイルに保存し、プロンプトとしてコマンドからコンパイルして実行します。

$javac TimeSeries_AWT.java
$java TImeSeries_AWT

すべてがうまくいけば、コンパイルして実行し、次の時系列グラフを生成します-

JFreeChart TimeSeries Chart

JPEG画像作成

上記の例を書き直して、コマンドラインからJPEGイメージを生成します。

import java.io.*;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.SeriesException;
import org.jfree.data.time.Second;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.chart.ChartUtilities;

public class TimeSeriesChart {

   public static void main( final String[ ] args )throws Exception {
      final TimeSeries series = new TimeSeries( "Random Data" );
      Second current = new Second();
      double value = 100.0;

      for ( int i = 0 ; i < 4000 ; i++ ) {

         try {
            value = value + Math.random( ) - 0.5;
            series.add( current , new Double( value ) );
            current = ( Second ) current.next( );
         } catch ( SeriesException e ) {
            System.err.println( "Error adding to series" );
         }
      }

      final XYDataset dataset=( XYDataset )new TimeSeriesCollection(series);
      JFreeChart timechart = ChartFactory.createTimeSeriesChart(
         "Computing Test",
         "Seconds",
         "Value",
         dataset,
         false,
         false,
         false);

      int width = 560;  /*Width of the image*/
      int height = 370; /*Height of the image*/
      File timeChart = new File( "TimeChart.jpeg" );
      ChartUtilities.saveChartAsJPEG( timeChart, timechart, width, height );
   }
}

上記のJavaコードを TimeSeriesChart.java ファイルに保存し、プロンプトとしてコマンドからコンパイルして実行します。

$javac TimeSeriesChart.java
$java TimeSeriesChart

環境に問題がなければ、コンパイルして実行し、現在のディレクトリにJPEGイメージファイル TimeChart.jpeg ファイルを作成します。