Настройка точек данных в диаграммах Treemap и Sunburst с использованием Java
Среди прочих типов диаграмм PowerPoint существуют два «иерархических» типа – Treemap и Sunburst (также известные как Sunburst Graph, Sunburst Diagram, Radial Chart, Radial Graph или Multi Level Pie Chart). Эти диаграммы отображают иерархические данные, организованные в виде дерева — от листьев к вершине ветви. Листья определяются точками данных серии, а каждый последующий вложенный уровень группировки определяется соответствующей категорией. Aspose.Slides for Java позволяет форматировать точки данных Sunburst‑диаграммы и Treemap в Java.
Ниже приведена Sunburst‑диаграмма, где данные в столбце Series1 определяют листовые узлы, а остальные столбцы задают иерархические точки данных:
Начнём с добавления новой Sunburst‑диаграммы в презентацию:
Presentation pres = new Presentation();
try {
IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.Sunburst, 100, 100, 450, 400);
// ...
} finally {
if (pres != null) pres.dispose();
}
See also
Если необходимо отформатировать точки данных диаграммы, следует использовать следующее: IChartDataPointLevelsManager, IChartDataPointLevel классы и метод IChartDataPoint.getDataPointLevels предоставляют доступ к форматированию точек данных Treemap и Sunburst диаграмм. IChartDataPointLevelsManager используется для доступа к многоуровневым категориям - он представляет контейнер объектов IChartDataPointLevel. По сути это оболочка для IChartCategoryLevelsManager с добавленными свойствами, специфичными для точек данных. IChartDataPointLevel класс имеет два метода: getFormat и getDataLabel которые предоставляют доступ к соответствующим настройкам.
Отображение значения точки данных
Показать значение точки данных «Leaf 4»:
IChartDataPointCollection dataPoints = chart.getChartData().getSeries().get_Item(0).getDataPoints();
dataPoints.get_Item(3).getDataPointLevels().get_Item(0).getLabel().getDataLabelFormat().setShowValue(true);
Установка подписи и цвета точки данных
Установить подпись точки данных «Branch 1», чтобы отображалось имя серии («Series1») вместо имени категории. Затем установить цвет текста в желтый:
IDataLabel branch1Label = dataPoints.get_Item(0).getDataPointLevels().get_Item(0).getLabel();
branch1Label.getDataLabelFormat().setShowCategoryName(false);
branch1Label.getDataLabelFormat().setShowSeriesName(true);
branch1Label.getDataLabelFormat().getTextFormat().getPortionFormat().getFillFormat().setFillType(FillType.Solid);
branch1Label.getDataLabelFormat().getTextFormat().getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.YELLOW);
Установка цвета ветки точки данных
Изменить цвет ветки «Steam 4»:
Presentation pres = new Presentation();
try {
IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.Sunburst, 100, 100, 450, 400);
IChartDataPointCollection dataPoints = chart.getChartData().getSeries().get_Item(0).getDataPoints();
IChartDataPointLevel stem4branch = dataPoints.get_Item(9).getDataPointLevels().get_Item(1);
stem4branch.getFormat().getFill().setFillType(FillType.Solid);
stem4branch.getFormat().getFill().getSolidFillColor().setColor(Color.RED);
pres.save("pres.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Вопросы и ответы
Можно ли изменить порядок (сортировку) сегментов в Sunburst/Treemap?
Нет. PowerPoint сортирует сегменты автоматически (обычно по убыванию значений по часовой стрелке). Aspose.Slides отражает это поведение: изменить порядок напрямую нельзя; его можно изменить только предварительной обработкой данных.
Как тема презентации влияет на цвета сегментов и подписей?
Цвета диаграммы наследуют тему/палитру презентации, если только вы явно не задаете заливки/шрифты. Для согласованных результатов фиксируйте сплошные заливки и форматирование текста на необходимых уровнях.
Сохранится ли при экспорте в PDF/PNG пользовательские цвета веток и настройки подписей?
Да. При экспорте презентации настройки диаграммы (заливки, подписи) сохраняются в выходных форматах, поскольку Aspose.Slides рендерит диаграмму с применённым форматированием.
Можно ли вычислить фактические координаты подписи/элемента для пользовательского наложения поверх диаграммы?
Да. После того как раскладка диаграммы проверена, доступны реальные x и y координаты элементов (например, DataLabel), что помогает точно позиционировать наложения.