Настройка точек данных в диаграммах Treemap и Sunburst с помощью PHP

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

Ниже представлена диаграмма Sunburst, где данные в колонке Series1 определяют листовые узлы, а остальные колонки определяют иерархические точки данных:

todo:image_alt_text

Начнём с добавления новой диаграммы Sunburst в презентацию:

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Sunburst, 100, 100, 450, 400);
    # ...
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

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

ChartDataPointLevelsManager, ChartDataPointLevel классы и метод ChartDataPoint::getDataPointLevels предоставляют доступ к форматированию точек данных диаграмм Treemap и Sunburst.
ChartDataPointLevelsManager используется для доступа к многоуровневым категориям — он представляет контейнер объектов ChartDataPointLevel…. По сути это оболочка для ChartCategoryLevelsManager с свойствами, добавленными специально для точек данных.
Класс [ChartDataPointLevel] имеет два метода: getFormat и getDataLabel, которые предоставляют доступ к соответствующим настройкам.

Отображение значения точки данных

Показать значение точки данных «Leaf 4»:

  $dataPoints = $chart->getChartData()->getSeries()->get_Item(0)->getDataPoints();
  $dataPoints->get_Item(3)->getDataPointLevels()->get_Item(0)->getLabel()->getDataLabelFormat()->setShowValue(true);

todo:image_alt_text

Установка подписи и цвета точки данных

Установить подпись точки данных «Branch 1», чтобы отображалось имя серии («Series1») вместо имени категории. Затем установить цвет текста в желтый:

  $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(java("java.awt.Color")->YELLOW);

todo:image_alt_text

Установка цвета ветки точки данных

Изменить цвет ветки «Steam 4»:

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Sunburst, 100, 100, 450, 400);
    $dataPoints = $chart->getChartData()->getSeries()->get_Item(0)->getDataPoints();
    $stem4branch = $dataPoints->get_Item(9)->getDataPointLevels()->get_Item(1);
    $stem4branch->getFormat()->getFill()->setFillType(FillType::Solid);
    $stem4branch->getFormat()->getFill()->getSolidFillColor()->setColor(java("java.awt.Color")->RED);
    $pres->save("pres.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

todo:image_alt_text

Часто задаваемые вопросы

Могу ли я изменить порядок (сортировку) сегментов в Sunburst/Treemap?
Нет. PowerPoint сортирует сегменты автоматически (обычно по убыванию значений, по часовой стрелке). Aspose.Slides повторяет это поведение: изменить порядок напрямую нельзя; его можно изменить только предобработкой данных.

Как тема презентации влияет на цвета сегментов и подписей?
Цвета диаграммы наследуют тему/палитру презентации, если явно не задать заполнения/шрифты. Для согласованных результатов фиксируйте сплошные заполнения и форматирование текста на нужных уровнях.

Сохранит ли экспорт в PDF/PNG пользовательские цвета веток и настройки подписей?
Да. При экспорте презентации настройки диаграммы (заполнения, подписи) сохраняются в выходных форматах, так как Aspose.Slides рендерит с применённым форматированием диаграммы.

Могу ли я вычислить фактические координаты подписи/элемента для пользовательского наложения поверх диаграммы?
Да. После проверки разметки диаграммы доступны фактические x и y для элементов (например, для DataLabel), что упрощает точное позиционирование наложений.