Java使用jFree创建饼图

  • Post author:
  • Post category:java


		<!--用于生成图片  -->
        <dependency>
            <groupId>org.jfree</groupId>
            <artifactId>jfreechart</artifactId>
            <version>1.0.19</version>
        </dependency>

所需依赖

创建工具类

/**
     * 创建饼图图片
     * 返回地址集合
     * @return
     */
    public static void createChartImg( List<List<String>> list , String filePath ) {
        File file;
        int i = 0;
        DefaultPieDataset pds = new DefaultPieDataset();
        if (list != null && list .size() > 0) {
            for (i = 1; i < list.size(); i++) {
                //设置饼图数据
                pds.setValue(tableList.get(i).get(0), Double.parseDouble(tableList.get(i).get(1)));
            }
        }
        if (i > 0) {
            createChart(pds, filePath, null );
        }
        return fileMap;
    }


    /**
     * 创建饼图并保存到本地
     *
     * @return
     */
    public static void createChart(DefaultPieDataset pds, String filePath, String title) {
        try {
            // 分别是:显示图表的标题、需要提供对应图表的DateSet对象、是否显示图例、是否生成贴士以及是否生成URL链接
            JFreeChart chart = ChartFactory.createPieChart(title, pds, false, false, true);
            // 如果不使用Font,中文将显示不出来
            java.awt.Font font = new java.awt.Font("宋体", Font.BOLD, 12);


            // 设置图片标题的字体
            chart.getTitle().setFont(font);
            // 得到图块,准备设置标签的字体
            PiePlot plot = (PiePlot) chart.getPlot();
            plot.setShadowPaint(Color.WHITE);
            //设置边框颜色
            plot.setOutlinePaint(Color.WHITE);
            // 设置标签字体
            plot.setLabelFont(font);
            plot.setStartAngle(new Float(3.14f / 2f));
            // 设置plot的前景色透明度
            plot.setForegroundAlpha(0.7f);
            // 设置plot的背景色透明度
            plot.setBackgroundAlpha(0.0f);
            plot.setBackgroundImageAlpha(0);
            // 设置标签生成器(默认{0})
            // {0}:key {1}:value {2}:百分比 {3}:sum
            plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}({1}占{2})"));
            // 将内存中的图片写到本地硬盘
            ChartUtilities.saveChartAsJPEG(new File(filePath), chart, 600, 300); //600宽度,300高度
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

生成如图

在这里插入图片描述



版权声明:本文为weixin_50074995原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。