Точки данных диаграмм Treemap и Sunburst

Среди прочих типов диаграмм PowerPoint есть два «иерархических» типа — Treemap и Sunburst (также известные как Sunburst Graph, Sunburst Diagram, Radial Chart, Radial Graph или Multi Level Pie Chart). Эти диаграммы отображают иерархические данные, организованные в виде дерева — от листьев к вершине ветви. Листья определяются точками данных серии, а каждый последующий вложенный уровень группировки определяется соответствующей категорией. Aspose.Slides for .NET позволяет форматировать точки данных диаграмм Sunburst и Treemap на C#.

Ниже показана диаграмма 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);
    // ...
}

Если необходимо отформатировать точки данных диаграммы, следует использовать следующее:

IChartDataPointLevelsManager, IChartDataPointLevel классы и IChartDataPoint.DataPointLevels свойство предоставляют доступ к форматированию точек данных — Treemap и Sunburst. IChartDataPointLevelsManager используется для доступа к многоуровневым категориям — это контейнер объектов IChartDataPointLevel. По сути это оболочка для IChartCategoryLevelsManager c добавленными специфическими для точек данных свойствами. Класс IChartDataPointLevel имеет два свойства: Format и DataLabel — они предоставляют доступ к соответствующим настройкам.

Показать значение точки данных

Показать значение точки данных «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), что облегчает точное позиционирование наложений.