📅  最后修改于: 2020-11-30 05:08:39             🧑  作者: Mango
在饼图中,每个扇区的弧长与其所代表的数量成正比。本章演示了如何使用JFreeChart从给定的一组业务数据中创建饼图。
以下示例借助饼图描述了移动销售。以下是不同的移动品牌及其销售量(每日销售量)的列表。
S.No | Mobile Brands | Sales (UNITS per day) |
---|---|---|
1 | Iphone 5S | 20 |
2 | Samsung Grand | 20 |
3 | MOTO G | 40 |
4 | Nokia Lumia | 10 |
以下是使用上述给定信息创建饼图的代码。此代码可帮助您将饼形图嵌入任何基于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图像。以下是JFreeChart库提供的两个API,您可以根据需要使用它们来生成PNG或JPEG图像。
saveChartAsPNG() -以PNG格式保存图像的API。
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图像文件。