JFreeChart饼图


在饼图中,每个扇区的弧长与其所代表的数量成正比。本章演示 - 我们如何使用JFreeChart 从一组给定的业务数据创建 饼图

业务数据

以下示例在饼图的帮助下描述了移动销售。以下是不同移动品牌及其销售(每天的单位)清单。

S.No 移动品牌 销售额(每天的单位数)
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饼图

如果您不需要将图表嵌入到任何应用程序中,则可以在命令提示符下创建图表图像。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 );
   }
}

让我们将上面的Java代码保存在 PieChart.java 文件中,然后从提示的命令中编译并运行它 -

$javac PieChart.java  
$java PieChart

如果一切正常,它将编译并运行在当前目录中创建一个名为 PieChart.jpeg 的JPEG图像文件。