Учебники

JFreeChart — диаграмма временного ряда

Диаграмма временного ряда отображает последовательность точек данных, которая изменяется через равные интервалы времени. Эта глава демонстрирует — как мы можем использовать JFreeChart для создания диаграммы временных рядов из заданного набора бизнес-данных.

Бизнес-данные

Давайте рассмотрим различные случайные числа, сгенерированные с использованием стандартного 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 

Если все в порядке, он скомпилируется и запустится для генерации следующего графика временных рядов —

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

Если с вашей средой все в порядке, она скомпилируется и запустится, чтобы создать файл изображения TimeChart.jpeg в формате JPEG в вашем текущем каталоге.