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 Pie Chart

如果您不需要將圖表嵌入任何應用程式中,則可以在命令提示符下建立圖表影像。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 影像檔案。

廣告

© . All rights reserved.