JFreeChart 使用一 饼图之简单实例
使用JFreeChart创建图表共有三个步骤。如下:
l创建一个dataset。该dataset包含图表要显示的数据。
l创建一个JFreeChart对象。该对象负责画这个图表。
l创建一个输出目标(如:一个panel,显示在屏幕上、或者生成一张图片到本地磁盘、或者输出到Response的流中返回到JSP)
使用JFreeChart生成饼图可以使用任何符合PieDataset接口的任何实现数据来创建饼图。DefaultDataset类实现了PieDataset接口,提供了一种便利的使用方式。我们可以自由的开发符合实际需的任意PieDataset接口实现。
饼图生成代码实例如下:
public class PieChartExample { /** * 创建PieChart * * @author 马建新(mervin) * @return 生成Chart图片的地址 */ public String createPieChart() { String filePath = "D:\\testJfreeChart.jpg"; try { DefaultPieDataset dataset = getPieDataSet(); // JFreeChart主要由三个部分构成:title(标题),legend(图释),plot(图表主体)。 JFreeChart chart = ChartFactory.createPieChart("测试PieChart", dataset, true, true, false); //设置Chart属性 setChartProperties(chart); ChartUtilities.saveChartAsJPEG(new File(filePath), chart, 400, 300); } catch (IOException e) { e.printStackTrace(); } return filePath; } /** * 设置Chart属性,可解决乱码问题 * @param chart 统计图标 */ private void setChartProperties(JFreeChart chart){ //三个部分设置字体的方法分别如下: TextTitle textTitle = chart.getTitle(); textTitle.setFont(new Font("宋体", Font.BOLD, 20)); LegendTitle legend = chart.getLegend(); if (legend != null) { legend.setItemFont(new Font("宋体", Font.BOLD, 20)); } PiePlot pie = (PiePlot) chart.getPlot(); pie.setLabelFont(new Font("宋体", Font.BOLD, 12)); pie.setNoDataMessage("No data available"); //设置PieChart是否显示为圆形 pie.setCircular(true); // 间距 pie.setLabelGap(0.01D); } /** * 获得PieChart的数据集 * * @return pieChart数据集 */ private DefaultPieDataset getPieDataSet() { DefaultPieDataset dataset = new DefaultPieDataset(); dataset.setValue("香蕉", 56.4); dataset.setValue("苹果", 63.5); dataset.setValue("橘子", 58.4); dataset.setValue("西瓜", 76.3); return dataset; } /** * @param args */ public static void main(String[] args) { PieChartExample piechart = new PieChartExample(); String filePath = piechart.createPieChart(); System.out.println("PieChart file path : " + filePath); try { Runtime.getRuntime().exec( "rundll32 url.dll FileProtocolHandler " + filePath); } catch (IOException e) { e.printStackTrace(); } } }