不想努力的程序员 2023-11-19 07:53 采纳率: 52.5%
浏览 65

poi绘制饼状图改变百分比和病状颜色

poi生成饼状图时如何设置百分比的小数位数和饼块颜色?
代码如下

 for (int i = 0; i < assessments.size(); i++) {

                    Assessment assessment1 = assessments.get(i);
                    int numberLine = 0;
                    numberLine = newNameList1.size();
                    //绘制柱状图
                    XSSFDrawing pieChartDrawing = sheet.createDrawingPatriarch();
                    int number4 = (i+1) * numberLine;
                    int number5 = i * numberLine;
                    int newLineNumber = number + 5;
                    int newNumber1 = number+35;
                    XSSFClientAnchor pieChartAnchor = pieChartDrawing.createAnchor(0, 0, 0, 0, number5, newLineNumber, number4, newNumber1);
                    XSSFChart pieChart = pieChartDrawing.createChart(pieChartAnchor);
                    pieChart.setTitleText(assessment1.getEmployeeName()+"得分详情");
                    // 标题是否覆盖图表
                    pieChart.setTitleOverlay(false);
                    // 图例位置
                    XDDFChartLegend pieChatLegend = pieChart.getOrAddLegend();
                    pieChatLegend.setPosition(LegendPosition.TOP_RIGHT);

                    XDDFCategoryDataSource pieChartCountries = XDDFDataSourcesFactory.fromArray(newNames);

                    int row3 = 3 + i;
                    int newFinalLine = 1+numberLine;

                    XDDFNumericalDataSource<Double> pieChartValues = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(row3, row3, 2, newFinalLine));
                    XDDFChartData pieData = pieChart.createData(ChartTypes.PIE, null, null);


                    pieData.setVaryColors(true);
                    
                    pieData.addSeries(pieChartCountries
                            , pieChartValues);
                    pieChart.plot(pieData);

                    CTDLbls dLbls = pieChart.getCTChart().getPlotArea().getPieChartArray(0).getSerArray(0).addNewDLbls();
                    dLbls.addNewShowVal().setVal(false);
                    dLbls.addNewShowLegendKey().setVal(false);
                    dLbls.addNewShowCatName().setVal(false);// 类别名称
                    dLbls.addNewShowSerName().setVal(false);
                    dLbls.addNewShowPercent().setVal(true);// 百分比
                    dLbls.addNewShowLeaderLines().setVal(true);// 引导线
                    dLbls.setSeparator("\n");// 分隔符为分行符
                    dLbls.addNewDLblPos().setVal(STDLblPos.Enum.forString("inEnd"));// 数据标签内
                }

导出来后如下图

img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-19 11:14
    关注

    【以下回答由 GPT 生成】

    具体问题: 1. 如何设置百分比的小数位数? 2. 如何调整饼块的颜色?

    解决方案:

    1. 设置百分比的小数位数: 在代码中,我们可以通过设置数据标签格式来控制百分比的小数位数。在循环的最后一行中,添加以下代码:
    CTDLbls dLbls = pieChart.getCTChart().getPlotArea().getPieChartArray(0).getSerArray(0).addNewDLbls();
    CTStrVal strVal = dLbls.addNewDLbl().addNewStrVal();
    strVal.setV("#0.00%");
    

    此代码将设置百分比的小数位数为两位小数。你可以根据需要修改格式字符串 #0.00% 中的数字来控制位数。

    1. 调整饼块的颜色: 在代码中,我们可以通过设置数据系列的颜色来调整饼块的颜色。在循环的最后一行添加以下代码:
    pieChart.getCTChart().getPlotArea().getPieChartArray(0).getSerArray(0).getIdx().setVal(i % 6); 
    

    此代码将为每个数据系列设置一个颜色。i % 6 可以生成一个循环的索引值,使得饼块的颜色循环使用六种不同的颜色。可以根据需要调整取模运算符右侧的数字来设置颜色循环的次数。

    以上是解决问题的思路和代码示例,根据你的实际需求和具体情况进行相应的修改和调整。如果还有其他问题或需要进一步的帮助,请随时提问。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 11月19日

悬赏问题

  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥15 看一下OPENMV原理图有没有错误
  • ¥100 H5网页如何调用微信扫一扫功能?
  • ¥15 讲解电路图,付费求解
  • ¥15 有偿请教计算电磁学的问题涉及到空间中时域UTD和FDTD算法结合的
  • ¥15 vite打包后,页面出现h.createElement is not a function,但本地运行正常
  • ¥15 Java,消息推送配置
  • ¥15 Java计划序号重编制功能,此功能会对所有序号重新排序,排序后不改变前后置关系。
  • ¥15 关于哈夫曼树应用得到一些问题