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

 

posted @ 2013-04-23 22:03  帅星星  阅读(2600)  评论(0编辑  收藏  举报