树状图和旭日图的数据点

在 PowerPoint 图表的其他类型中,有两种“层级”类型——Treemap(树状图)和Sunburst(旭日图)图表(亦称 Sunburst Graph、Sunburst Diagram、Radial Chart、Radial Graph 或 Multi Level Pie Chart)。这些图表以树状结构展示层级数据——从叶子节点到分支顶端。叶子节点由系列数据点定义,每个后续的嵌套分组层级由相应的分类定义。Aspose.Slides for .NET 允许在 C# 中对 Sunburst 图表和 Treemap 的数据点进行格式化。

下面是一个 Sunburst 图表,其中 Series1 列的数据定义了叶子节点,其他列定义了层级数据点:

todo:image_alt_text

让我们从向演示文稿添加一个新的 Sunburst 图表开始:

using (Presentation pres = new Presentation())
{
    IChart chart = pres.Slides[0].Shapes.AddChart(ChartType.Sunburst, 100, 100, 450, 400);
    // ...
}

如果需要对图表的数据点进行格式化,应使用以下内容:

IChartDataPointLevelsManagerIChartDataPointLevel 类以及 IChartDataPoint.DataPointLevels 属性提供了对 Treemap 和 Sunburst 图表数据点进行格式化的访问方式。
IChartDataPointLevelsManager 用于访问多层级分类——它表示 IChartDataPointLevel 对象的容器。
基本上它是对 IChartCategoryLevelsManager 的包装,并为数据点添加了特定的属性。
IChartDataPointLevel 类拥有两个属性: FormatDataLabel ,它们提供对相应设置的访问。

显示数据点值

显示 “Leaf 4” 数据点的值:

IChartDataPointCollection dataPoints = chart.ChartData.Series[0].DataPoints;
dataPoints[3].DataPointLevels[0].Label.DataLabelFormat.ShowValue = true;

todo:image_alt_text

设置数据点标签和颜色

将 “Branch 1” 的数据标签设置为显示系列名称(“Series1”),而不是分类名称。随后将文字颜色设置为黄色:

IDataLabel branch1Label = dataPoints[0].DataPointLevels[2].Label;
branch1Label.DataLabelFormat.ShowCategoryName = false;
branch1Label.DataLabelFormat.ShowSeriesName = true;

branch1Label.DataLabelFormat.TextFormat.PortionFormat.FillFormat.FillType = FillType.Solid;
branch1Label.DataLabelFormat.TextFormat.PortionFormat.FillFormat.SolidFillColor.Color = Color.Yellow;

todo:image_alt_text

设置数据点分支颜色

更改 “Stem 4” 分支的颜色:

using (Presentation pres = new Presentation())
{
    IChart chart = pres.Slides[0].Shapes.AddChart(ChartType.Sunburst, 100, 100, 450, 400);
    
    IChartDataPointCollection dataPoints = chart.ChartData.Series[0].DataPoints;

    IChartDataPointLevel stem4branch = dataPoints[9].DataPointLevels[1];
    
    stem4branch.Format.Fill.FillType = FillType.Solid;
    stem4branch.Format.Fill.SolidFillColor.Color = Color.Red;
      
    pres.Save("pres.pptx", SaveFormat.Pptx);
}

todo:image_alt_text

FAQ

我可以更改 Sunburst/Treemap 中各分段的顺序(排序)吗?

不能。PowerPoint 会自动对分段进行排序(通常按降序值、顺时针方向)。Aspose.Slides 复制了这种行为:无法直接更改顺序,只能通过预处理数据来实现。

演示文稿的主题如何影响分段和标签的颜色?

图表颜色会继承演示文稿的主题/调色板,除非显式设置填充或字体。为获得一致的效果,请在所需层级上锁定纯色填充和文字格式。

导出为 PDF/PNG 时会保留自定义的分支颜色和标签设置吗?

会。导出演示文稿时,图表的设置(填充、标签)会在输出格式中保留下来,因为 Aspose.Slides 会使用已应用的图表格式进行渲染。

我能计算标签/元素的实际坐标,以便在图表上方放置自定义遮罩吗?

可以。图表布局验证后,ActualX/ActualY 可用于元素(例如 DataLabel),这有助于精确定位覆盖层。