Настройка точек данных в диаграммах Treemap и Sunburst с использованием С++
Среди других типов диаграмм PowerPoint есть два «иерархических» типа — Treemap и Sunburst (также известные как Sunburst Graph, Sunburst Diagram, Radial Chart, Radial Graph или Multi Level Pie Chart). Эти диаграммы отображают иерархические данные, организованные как дерево — от листьев к вершине ветви. Листья задаются точками данных серии, а каждый последующий уровень вложенной группы определяется соответствующей категорией. Aspose.Slides for C++ позволяет форматировать точки данных диаграмм Sunburst и Treemap в C++.
Ниже представлена диаграмма Sunburst, где данные в столбце Series1 определяют листовые узлы, а остальные столбцы определяют иерархические точки данных:
Начнём с добавления новой диаграммы Sunburst в презентацию:
auto pres = System::MakeObject<Presentation>();
auto chart = pres->get_Slides()->idx_get(0)->get_Shapes()->AddChart(ChartType::Sunburst, 100.0f, 100.0f, 450.0f, 400.0f);
// ...
Смотрите также
Если необходимо отформатировать точки данных диаграммы, следует использовать следующее:
IChartDataPointLevelsManager,
IChartDataPointLevel classes и IChartDataPoint::get_DataPointLevels() method предоставляют доступ к форматированию точек данных диаграмм Treemap и Sunburst.
IChartDataPointLevelsManager используется для доступа к многоуровневым категориям — он представляет контейнер объектов IChartDataPointLevel.
По сути это оболочка для IChartCategoryLevelsManager со свойствами, специфичными для точек данных.
Класс [IChartDataPointLevel] имеет два метода: get_Format() и get_Label(), которые предоставляют доступ к соответствующим настройкам.
Показать значение точки данных
Показать значение точки данных «Leaf 4»:
auto dataPoints = chart->get_ChartData()->get_Series()->idx_get(0)->get_DataPoints();
dataPoints->idx_get(3)->get_DataPointLevels()->idx_get(0)->get_Label()->get_DataLabelFormat()->set_ShowValue(true);
Установить метку и цвет точки данных
Установить метку данных «Branch 1» так, чтобы отображалось имя серии (“Series1”) вместо имени категории. Затем установить цвет текста в желтый:
auto branch1Label = dataPoints->idx_get(0)->get_DataPointLevels()->idx_get(2)->get_Label();
branch1Label->get_DataLabelFormat()->set_ShowCategoryName(false);
branch1Label->get_DataLabelFormat()->set_ShowSeriesName(true);
branch1Label->get_DataLabelFormat()->get_TextFormat()->get_PortionFormat()->get_FillFormat()->set_FillType(FillType::Solid);
branch1Label->get_DataLabelFormat()->get_TextFormat()->get_PortionFormat()->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Yellow());
Установить цвет ветки точки данных
Изменить цвет ветки «Stem 4»:
auto pres = System::MakeObject<Presentation>();
auto chart = pres->get_Slides()->idx_get(0)->get_Shapes()->AddChart(ChartType::Sunburst, 100.0f, 100.0f, 450.0f, 400.0f);
auto dataPoints = chart->get_ChartData()->get_Series()->idx_get(0)->get_DataPoints();
auto stem4branch = dataPoints->idx_get(9)->get_DataPointLevels()->idx_get(1);
stem4branch->get_Format()->get_Fill()->set_FillType(FillType::Solid);
stem4branch->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(Color::get_Red());
pres->Save(u"pres.pptx", SaveFormat::Pptx);
FAQ
Могу ли я изменить порядок (сортировку) сегментов в Sunburst/Treemap?
Нет. PowerPoint сортирует сегменты автоматически (обычно по убывающим значениям, по часовой стрелке). Aspose.Slides зеркалирует это поведение: изменить порядок напрямую невозможно; добиться его можно только предварительной обработкой данных.
Как тема презентации влияет на цвета сегментов и меток?
Цвета диаграмм наследуют theme/palette презентации, если вы явно не задаете заливки/шрифты. Для согласованных результатов фиксируйте сплошные заливки и форматирование текста на требуемых уровнях.
Сохранит ли экспорт в PDF/PNG пользовательские цвета веток и настройки меток?
Да. При экспорте презентации настройки диаграммы (заливки, метки) сохраняются в выходных форматах, так как Aspose.Slides рендерит их с примененным форматированием.
Могу ли я вычислить реальные координаты метки/элемента для пользовательского размещения наложения поверх диаграммы?
Да. После того как макет диаграммы проверен, доступны реальные X и Y для элементов (например, DataLabel), что помогает точно позиционировать наложения.