JFreeChart-시계열 차트

시계열 차트는 동일한 시간 간격으로 변하는 일련의 데이터 포인트를 표시합니다. 이 장에서는 — JFreeChart를 사용하여Time Series Chart 주어진 비즈니스 데이터 세트에서

비즈니스 데이터

표준 Java API를 사용하여 생성 된 다양한 난수를 고려해 보겠습니다. Math.random(). 이 숫자를 사용하여 시계열 차트를 생성합니다. 주어진 시간 간격으로 웹 사이트에서 발생하는 총 오류 수에 대해 유사한 차트를 생성 할 수 있습니다.

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

모든 것이 정상이면 컴파일되고 실행되어 다음 시계열 그래프를 생성합니다.

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 현재 디렉토리의 파일.