- JFreeChart 教程
- JFreeChart - 首頁
- JFreeChart - 概述
- JFreeChart - 安裝
- JFreeChart - 架構
- JFreeChart - 參考 API
- JFreeChart - 餅圖
- JFreeChart - 條形圖
- JFreeChart - 折線圖
- JFreeChart - XY 圖
- JFreeChart - 3D 圖表/條形圖
- JFreeChart - 泡沫圖
- JFreeChart - 時間序列圖
- JFreeChart - 檔案介面
- JFreeChart - 資料庫介面
- JFreeChart 有用資源
- JFreeChart - 快速指南
- JFreeChart - 有用資源
- JFreeChart - 討論
JFreeChart - 餅圖
在餅圖中,每個扇形的弧長與其表示的數量成正比。本章演示瞭如何使用 JFreeChart 從給定的業務資料集中建立餅圖。
業務資料
以下示例使用餅圖描述了手機銷量。以下是不同手機品牌及其銷量(每天單位)的列表。
| 序號 | 手機品牌 | 銷量(每天單位) |
|---|---|---|
| 1 | Iphone 5S | 20 |
| 2 | 三星 Grand | 20 |
| 3 | MOTO G | 40 |
| 4 | 諾基亞 Lumia | 10 |
基於 AWT 的應用程式
以下是使用上述資訊建立餅圖的程式碼。此程式碼可幫助您將餅圖嵌入任何基於 AWT 的應用程式中。
import javax.swing.JPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class PieChart_AWT extends ApplicationFrame {
public PieChart_AWT( String title ) {
super( title );
setContentPane(createDemoPanel( ));
}
private static PieDataset createDataset( ) {
DefaultPieDataset dataset = new DefaultPieDataset( );
dataset.setValue( "IPhone 5s" , new Double( 20 ) );
dataset.setValue( "SamSung Grand" , new Double( 20 ) );
dataset.setValue( "MotoG" , new Double( 40 ) );
dataset.setValue( "Nokia Lumia" , new Double( 10 ) );
return dataset;
}
private static JFreeChart createChart( PieDataset dataset ) {
JFreeChart chart = ChartFactory.createPieChart(
"Mobile Sales", // chart title
dataset, // data
true, // include legend
true,
false);
return chart;
}
public static JPanel createDemoPanel( ) {
JFreeChart chart = createChart(createDataset( ) );
return new ChartPanel( chart );
}
public static void main( String[ ] args ) {
PieChart_AWT demo = new PieChart_AWT( "Mobile Sales" );
demo.setSize( 560 , 367 );
RefineryUtilities.centerFrameOnScreen( demo );
demo.setVisible( true );
}
}
讓我們將上述 Java 程式碼儲存在PieChart_AWT.java檔案中,然後從命令提示符中編譯並執行它,如下所示:
$javac PieChart_AWT.java $java PieChart_AWT
如果一切正常,它將編譯並執行以生成以下餅圖:
如果您不需要將圖表嵌入任何應用程式中,則可以在命令提示符下建立圖表影像。JFreeChart 允許您將圖表影像儲存為 JPG 或 PNG 格式。
JPEG 影像建立
讓我們重寫上述示例以從命令列生成 JPEG 影像。以下是 JFreeChart 庫提供的兩個 API,您可以使用它們根據您的需要生成 PNG 或 JPEG 影像。
saveChartAsPNG() - 儲存 PNG 格式影像的 API。
saveChartAsJPEG() - 儲存 JPEG 格式影像的 API。
import java.io.*;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
public class PieChart {
public static void main( String[ ] args ) throws Exception {
DefaultPieDataset dataset = new DefaultPieDataset( );
dataset.setValue("IPhone 5s", new Double( 20 ) );
dataset.setValue("SamSung Grand", new Double( 20 ) );
dataset.setValue("MotoG", new Double( 40 ) );
dataset.setValue("Nokia Lumia", new Double( 10 ) );
JFreeChart chart = ChartFactory.createPieChart(
"Mobile Sales", // chart title
dataset, // data
true, // include legend
true,
false);
int width = 640; /* Width of the image */
int height = 480; /* Height of the image */
File pieChart = new File( "PieChart.jpeg" );
ChartUtilities.saveChartAsJPEG( pieChart , chart , width , height );
}
}
讓我們將上述 Java 程式碼儲存在PieChart.java檔案中,然後從命令提示符中編譯並執行它,如下所示:
$javac PieChart.java $java PieChart
如果一切正常,它將編譯並執行以在您的當前目錄中建立一個名為PieChart.jpeg的 JPEG 影像檔案。
廣告