JFreeChart餅圖

在餅圖中,每個扇區的弧長成正比它代表的數量。本章演示瞭如何使用JFreeChart 從一個給定的業務數據創建餅圖。

業務數據

下面的例子描述了移動銷售餅圖。以下是不同移動品牌和銷售(每天單位)列表。

S.N.

手機品牌

銷售(天)

1

Iphone 5S

20

2

Samsung Grand

20

3

MOTO G

40

4

Nokia 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 );
}
}

讓我們繼續上面PieChart_AWT.java文件中的Java代碼,然後從命令提示符下編譯並運行它,如下所示:

$javac PieChart_AWT.java
$java PieChart_AWT

如果一切順利,它會編譯並運行生成以下餅圖:

JFreeChart

如果不需要在應用程序嵌入圖表中,那麼可以在命令提示符下創建圖表的圖像。 JFreeChart允許以JPG或PNG格式保存圖表圖像。

JPEG創建圖像

讓我們重新寫上面的例子,生成命令行JPEG圖像。以下是通過JFreeChart庫,按要求提供兩個API,用它來生成PNG或JPEG圖像。

  • saveChartAsPNG() - API用來保存圖像爲PNG格式。

  • saveChartAsJPEG() - API用來保存圖像JPEG格式。

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 );

}
}

保持PieChart.java文件中如上面的Java代碼,然後從命令提示符下編譯並運行它,如下所示:

$javac PieChart.java
$java PieChart

如果一切順利,它會編譯並運行在當前的目錄中創建JPEG圖像文件爲namedPieChart.jpeg。