- JFreeChart 教程
- JFreeChart - 主頁
- JFreeChart - 概覽
- JFreeChart - 安裝
- JFreeChart - 架構
- JFreeChart - 引用 API
- JFreeChart - 餅圖
- JFreeChart - 條形圖
- JFreeChart - 折線圖
- JFreeChart - XY 圖形
- JFreeChart - 3D 圖形/條形圖
- JFreeChart - 氣泡圖
- JFreeChart - 時間序列圖
- JFreeChart - 檔案介面
- JFreeChart - 資料庫介面
- JFreeChart 實用資源
- JFreeChart - 快速指南
- JFreeChart - 實用資源
- JFreeChart - 討論
JFreeChart - 折線圖
折線圖或線形圖使用直線段將資訊顯示為一系列資料點(標記)。折線圖顯示資料如何在相等的時間頻率下變化。
本章演示如何使用 JFreeChart 根據給定的業務資料集建立 **折線圖**。
業務資料
以下示例繪製了一條折線圖,顯示自 1970 年以來,不同年份開辦的學校數量趨勢。
給定資料如下 -
| 年份 | 學校數量 |
|---|---|
| 1970 | 15 |
| 1980 | 30 |
| 1990 | 60 |
| 2000 | 120 |
| 2013 | 240 |
| 2014 | 300 |
基於 AWT 的應用程式
以下是根據上述資訊建立折線圖的程式碼。此程式碼可幫助你將折線圖嵌入任何基於 AWT 的應用程式。
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
public class LineChart_AWT extends ApplicationFrame {
public LineChart_AWT( String applicationTitle , String chartTitle ) {
super(applicationTitle);
JFreeChart lineChart = ChartFactory.createLineChart(
chartTitle,
"Years","Number of Schools",
createDataset(),
PlotOrientation.VERTICAL,
true,true,false);
ChartPanel chartPanel = new ChartPanel( lineChart );
chartPanel.setPreferredSize( new java.awt.Dimension( 560 , 367 ) );
setContentPane( chartPanel );
}
private DefaultCategoryDataset createDataset( ) {
DefaultCategoryDataset dataset = new DefaultCategoryDataset( );
dataset.addValue( 15 , "schools" , "1970" );
dataset.addValue( 30 , "schools" , "1980" );
dataset.addValue( 60 , "schools" , "1990" );
dataset.addValue( 120 , "schools" , "2000" );
dataset.addValue( 240 , "schools" , "2010" );
dataset.addValue( 300 , "schools" , "2014" );
return dataset;
}
public static void main( String[ ] args ) {
LineChart_AWT chart = new LineChart_AWT(
"School Vs Years" ,
"Numer of Schools vs years");
chart.pack( );
RefineryUtilities.centerFrameOnScreen( chart );
chart.setVisible( true );
}
}
我們把上述 Java 程式碼放在 **LineChart_AWT.java** 檔案中,然後從命令提示符中編譯並執行,如下所示 -
$javac LineChart_AWT.java $java LineChart_AWT
如果一切正常,它將編譯並執行,生成以下折線圖 -
建立 JPEG 影像
讓我們重新編寫上述示例,以從命令列生成 JPEG 影像。
import java.io.*;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
public class LineChart {
public static void main( String[ ] args ) throws Exception {
DefaultCategoryDataset line_chart_dataset = new DefaultCategoryDataset();
line_chart_dataset.addValue( 15 , "schools" , "1970" );
line_chart_dataset.addValue( 30 , "schools" , "1980" );
line_chart_dataset.addValue( 60 , "schools" , "1990" );
line_chart_dataset.addValue( 120 , "schools" , "2000" );
line_chart_dataset.addValue( 240 , "schools" , "2010" );
line_chart_dataset.addValue( 300 , "schools" , "2014" );
JFreeChart lineChartObject = ChartFactory.createLineChart(
"Schools Vs Years","Year",
"Schools Count",
line_chart_dataset,PlotOrientation.VERTICAL,
true,true,false);
int width = 640; /* Width of the image */
int height = 480; /* Height of the image */
File lineChart = new File( "LineChart.jpeg" );
ChartUtilities.saveChartAsJPEG(lineChart ,lineChartObject, width ,height);
}
}
我們把上述 Java 程式碼放在 **LineChart.java** 檔案中,然後從命令提示符中編譯並執行,如下所示 -
$javac LineChart.java $java LineChart
如果一切正常,它將編譯並執行,在當前目錄中建立一個名為 **LineChart.jpeg** 的 JPEG 影像檔案。
廣告