创建图表后图表每个系列的颜色怎么单独设置

技术背景:Aspose.Words For JAVA 20.7.Jar JDK1.8。
技术问题:我使用下面代码创建了一个圆形图 图表,我会设置整个图表的背景和线条。请问怎么单独设置每个系列的背景和线条?
代码如下:

public class Demo05 {
    public static void main(String[] args) {
        try {
            // 创建一个空白文档
            Document doc = new Document();
            DocumentBuilder builder = new DocumentBuilder(doc);
            // 行数据
            List<GxyItemData> rowData = AttributeData.list13();
            String[] names = new String[]{"男生", "女生", "未知"};
            double[] values = new double[]{70.0, 20.0, 10.0};
            // 添加表格
            drawDoughnutChart(builder,"男女比例",true,names,values);
            // 保存文档
            String fileName = "output/AsposeWord1" + new SimpleDateFormat("MMddHHmmss").format(new Date()) + ".docx";
            doc.save(fileName);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    public static void drawDoughnutChart(DocumentBuilder builder, String title, Boolean showPercent,String[] label, double[] value) throws Exception {
        //创建圆环图
        Shape shape = builder.insertChart(ChartType.DOUGHNUT, 380, 250);
        // 设置图表形状的文字环绕方式
        shape.setWrapSide(WrapSide.BOTH);
        // 设置图表形状的文字环绕类型为内联
        shape.setWrapType(WrapType.INLINE);
        // 设置图表形状的垂直对齐方式为居中
        shape.setVerticalAlignment(VerticalAlignment.CENTER);
        // 设置图表形状的水平对齐方式为居中
        shape.setHorizontalAlignment(HorizontalAlignment.CENTER);
        // 设置图表形状是否允许重叠
        shape.setAllowOverlap(false);
        shape.getStroke().setColor(new Color(221,221,221)); // 设置线条颜色
        shape.getFill().setColor(new Color(191,226,228)); // 设置填充颜色
        com.aspose.words.Chart chart = shape.getChart(); //获取图表对象
        // 获取图表的系列集合并清空现有系列
        ChartSeriesCollection seriesCollection = chart.getSeries();
        seriesCollection.clear();
        // 设置图例位置为底部
        chart.getLegend().setPosition(LegendPosition.BOTTOM);
        // 设置图表标题的显示和文本内容
        chart.getTitle().setShow(true);
        chart.getTitle().setText(title);
        // 设置图表标题不覆盖图表内容
        chart.getTitle().setOverlay(false);
        // 设置图例不覆盖图表内容
        chart.getLegend().setOverlay(false);

        // 添加一个系列到系列集合中,系列名称为"Series",X轴标签为label,Y轴值为value
        ChartSeries chartSeries = seriesCollection.add("Series", label, value);
        //获取系列的数据标签集合,用于控制每个数据点上的标签。
        ChartDataLabelCollection dataLabelCollection = chartSeries.getDataLabels();
        ChartDataLabel chartDataLabel;
        //设置图表系列数据标签 : 循环遍历数据标签集合的长度,为每个数据点添加相应的数据标签。
        for (int i = 0; i < label.length; i++) {
            chartDataLabel = dataLabelCollection.add(i); //添加一个数据标签到数据标签集合中,标签索引为i。
            chartDataLabel.setShowLegendKey(true);//设置数据标签是否显示图例键(标识数据点所属系列的标志)。
            chartDataLabel.setShowLeaderLines(true);//设置是否显示指引线,一般指向数据标签的直线。
            chartDataLabel.setShowCategoryName(true);//设置是否显示X轴标签,即图表中的每个数据点的标签。
            chartDataLabel.setShowSeriesName(false);//设置是否显示系列名称,即图表中的每个系列的名称。
            chartDataLabel.setShowBubbleSize(true);//设置是否显示气泡大小,一般在气泡图中使用。

            //根据参数 showPercent 决定是否显示百分比,如果为 true,则显示百分比;否则,显示Y轴值。
            if (showPercent){
                chartDataLabel.setShowPercentage(true);//则显示百分比
            }else {
                chartDataLabel.setShowValue(true);//显示Y轴值。
            }
            //设置数据标签的分隔符为换行符,即每个标签显示在一行。
            chartDataLabel.setSeparator("\r\n");
        }
        // 设置系列的平滑属性为true
        chartSeries.setSmooth(true);
        // 设置段落格式的首行缩进为5个磅
        builder.getParagraphFormat().setFirstLineIndent(5);
    }

运行效果如下:
image.png (17.9 KB)

期望效果如下:
image.png (21.7 KB)

需求:1.请问大佬们如何将标签设置在图表的边上而不是在图表上面
2.请问怎么单独设置每个系列的颜色,例如我下面的代码 如何引用到上方

private static Color getSeriesColor(int index) {
        switch (index) {
            case 0:
                return Color.MAGENTA;
            case 1:
                return Color.YELLOW;
            case 2:
                return Color.GRAY;
            default:
                return Color.BLACK; // 在这里设置默认颜色
        }
    }

@denis.shvydkiy
请大佬们帮帮我 谢谢大家

我也是咨询者,都是帮客户咨询的问题 :sweat_smile:不好意思呢

@lzx9527,

  1. 在最新版本的Aspose.Words中只能通过 ChartFormat 更改所有系列的背景颜色和线条颜色,但这些方法在20.7中不可用:
// 换背景
chartSeries.getFormat().getFill().setForeColor(Color.BLUE);
// 改变线条颜色
chartSeries.getFormat().getStroke().setForeColor(Color.RED);
  1. 不提供更改标签位置的API。

明白啦 谢谢大佬 感谢大佬每次的相助