- JFreeChart 教程
- JFreeChart - 主頁
- JFreeChart - 概覽
- JFreeChart - 安裝
- JFreeChart - 架構
- JFreeChart - 引用 API
- JFreeChart - 餅狀圖
- JFreeChart - 條形圖
- JFreeChart - 折線圖
- JFreeChart - XY 圖表
- JFreeChart - 3D 圖表/條形圖
- JFreeChart - 氣泡圖
- JFreeChart - 時間序列圖表
- JFreeChart - 檔案介面
- JFreeChart - 資料庫介面
- JFreeChart 有用資源
- JFreeChart - 快速指南
- JFreeChart - 有用資源
- JFreeChart - 討論
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
如果一切正常,它將編譯並執行以生成以下時間序列圖 −
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。
廣告