开发手册 欢迎您!
软件开发者资料库

JFreeChart - TimeSeries图表

JFreeChart TimeSeries Chart - 从概述开始,简单易学地学习JFreeChart Concepts,然后介绍JFreeChart安装,参考API,JFreeChart架构,饼图,条形图,折线图,XY图表,3D饼图/条形图,气泡图,时间系列图表,JFreeChart文件和JFree图表数据库等

时间序列图表显示数据点序列,它们以相等的时间间隔变化.本章演示了如何使用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

如果环境一切正常,它将编译并运行以在当前目录中创建JPEG图像文件 TimeChart.jpeg 文件.