JFreeChart - Bagan TimeSeries

Bagan deret waktu menampilkan urutan titik data, yang bervariasi pada interval waktu yang sama. Bab ini menunjukkan - bagaimana kita bisa menggunakan JFreeChart untuk membuatTime Series Chart dari kumpulan data bisnis tertentu.

Data Bisnis

Mari kita pertimbangkan berbagai nomor acak yang dihasilkan dengan menggunakan API Java standar Math.random(). Kami menggunakan angka-angka ini untuk menghasilkan Diagram Rangkaian Waktu. Anda dapat membuat bagan serupa untuk jumlah total kesalahan yang terjadi di situs web Anda pada interval waktu tertentu.

Aplikasi Berbasis AWT

Berikut adalah kode untuk membuat Time Series Chart dari angka yang dihasilkan Math.random() pada waktu internal tertentu.

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 );
   }
}

Mari kita simpan kode Java di atas TimeSeries_AWT.java file, lalu kompilasi dan jalankan dari perintah yang diminta sebagai -

$javac TimeSeries_AWT.java  
$java TImeSeries_AWT

Jika semuanya baik-baik saja, itu akan dikompilasi dan dijalankan untuk menghasilkan Grafik Rangkaian Waktu berikut -

Penciptaan Gambar JPEG

Mari kita tulis ulang contoh di atas untuk menghasilkan gambar JPEG dari baris perintah.

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 );
   }
}

Mari kita simpan kode Java di atas TimeSeriesChart.java file, lalu kompilasi dan jalankan dari perintah yang diminta sebagai -

$javac TimeSeriesChart.java  
$java TimeSeriesChart

Jika semuanya baik-baik saja dengan lingkungan Anda, itu akan dikompilasi dan dijalankan untuk membuat file gambar JPEG TimeChart.jpeg file di direktori Anda saat ini.