Dostosowywanie punktów danych w wykresach Treemap i Sunburst przy użyciu PHP

Wprowadzenie

Oprócz innych typów wykresów PowerPoint istnieją dwa „hierarchiczne” typy – wykres Treemap i wykres Sunburst (znany również jako Sunburst Graph, Sunburst Diagram, Radial Chart, Radial Graph lub Multi Level Pie Chart). Te wykresy wyświetlają dane hierarchiczne zorganizowane jako drzewo – od liści do góry gałęzi. Liście są definiowane przez punkty danych serii, a każdy kolejny poziom zagnieżdżonej grupy definiowany jest przez odpowiednią kategorię. Aspose.Slides for PHP via Java umożliwia formatowanie punktów danych wykresu Sunburst i Treemap.

Poniżej znajduje się wykres Sunburst, gdzie dane w kolumnie Series1 definiują węzły liścia, a pozostałe kolumny definiują hierarchiczne punkty danych:

todo:image_alt_text

Rozpocznijmy od dodania nowego wykresu Sunburst do prezentacji:

  $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();
    }
  }

Jeśli istnieje potrzeba formatowania punktów danych wykresu, powinniśmy użyć następujących:

ChartDataPointLevelsManager, ChartDataPointLevel klasy oraz ChartDataPoint::getDataPointLevels metoda zapewniają dostęp do formatowania punktów danych wykresów Treemap i Sunburst. ChartDataPointLevelsManager służy do uzyskiwania dostępu do wielopoziomowych kategorii – reprezentuje kontener obiektów ChartDataPointLevel. W zasadzie jest to wrapper dla ChartCategoryLevelsManager z dodanymi właściwościami specyficznymi dla punktów danych. Klasa ChartDataPointLevel posiada dwie metody: getFormat i getDataLabel, które zapewniają dostęp do odpowiednich ustawień.

Pokaż wartość punktu danych

Pokaż wartość punktu danych “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

Ustaw etykietę i kolor punktu danych

Ustaw etykietę danych “Branch 1”, aby wyświetlała nazwę serii (“Series1”) zamiast nazwy kategorii. Następnie ustaw kolor tekstu na żółty:

  $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

Ustaw kolor gałęzi punktu danych

Zmień kolor gałęzi “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

FAQ

Czy mogę zmienić kolejność (sortowanie) segmentów w wykresie Sunburst/Treemap?

Nie. PowerPoint sortuje segmenty automatycznie (zazwyczaj malejąco, zgodnie z ruchem wskazówek zegara). Aspose.Slides odzwierciedla to zachowanie: nie można bezpośrednio zmienić kolejności; osiąga się to poprzez wstępne przetwarzanie danych.

Jak motyw prezentacji wpływa na kolory segmentów i etykiet?

Kolory wykresu dziedziczą motyw/palettę prezentacji, chyba że jawnie ustawisz wypełnienia/czcionki. Aby uzyskać spójne wyniki, zamknij wypełnienia stałe i formatowanie tekstu na wymaganych poziomach.

Czy eksport do PDF/PNG zachowa niestandardowe kolory gałęzi i ustawienia etykiet?

Tak. Podczas eksportu prezentacji ustawienia wykresu (wypełnienia, etykiety) są zachowywane w formatach wyjściowych, ponieważ Aspose.Slides renderuje je z zastosowanym formatowaniem.

Czy mogę obliczyć rzeczywiste współrzędne etykiety/elementu w celu umieszczenia własnej nakładki nad wykresem?

Tak. Po zwalidowaniu układu wykresu rzeczywiste x i y są dostępne dla elementów (na przykład dla DataLabel), co pomaga w precyzyjnym pozycjonowaniu nakładek.