Personnaliser les points de données dans les graphiques Treemap et Sunburst avec PHP

Parmi les différents types de graphiques PowerPoint, il existe deux types « hiérarchiques » – Treemap et Sunburst (également connus sous les noms de Graphique Sunburst, Diagramme Sunburst, Graphique radial, Graphique radial ou Diagramme circulaire à niveaux multiples). Ces graphiques affichent des données hiérarchiques organisées sous forme d’arbre – des feuilles jusqu’au sommet de la branche. Les feuilles sont définies par les points de données de la série, et chaque niveau de regroupement imbriqué suivant est défini par la catégorie correspondante. Aspose.Slides for PHP via Java permet de formater les points de données du graphique Sunburst et du Treemap .

Voici un graphique Sunburst, où les données de la colonne Series1 définissent les nœuds feuille, tandis que les autres colonnes définissent les points de données hiérarchiques : todo:image_alt_text

Commençons par ajouter un nouveau graphique Sunburst à la présentation :

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

S’il est nécessaire de formater les points de données du graphique, nous devons utiliser les éléments suivants : ChartDataPointLevelsManager, ChartDataPointLevel classes et ChartDataPoint::getDataPointLevels méthode fournissent l’accès au formatage des points de données des graphiques Treemap et Sunburst. ChartDataPointLevelsManager est utilisé pour accéder aux catégories multiniveaux – il représente le conteneur des objets ChartDataPointLevel.
En gros, c’est un wrapper pour ChartCategoryLevelsManager avec des propriétés ajoutées spécifiques aux points de données. La classe [ChartDataPointLevel] possède deux méthodes : getFormat et getDataLabel qui donnent accès aux paramètres correspondants.

Afficher la valeur d’un point de données

Affiche la valeur du point de données « 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

Définir l’étiquette et la couleur d’un point de données

Définissez l’étiquette du point de données « Branch 1 » pour afficher le nom de la série (“Series1”) au lieu du nom de la catégorie. Puis définissez la couleur du texte en jaune :

  $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

Définir la couleur de branche d’un point de données

Modifiez la couleur de la branche « 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

Puis-je modifier l’ordre (tri) des segments dans Sunburst/Treemap ?

Non. PowerPoint trie les segments automatiquement (généralement par valeurs décroissantes, dans le sens des aiguilles d’une montre). Aspose.Slides reflète ce comportement : vous ne pouvez pas modifier l’ordre directement ; vous devez le faire en prétraitant les données.

Comment le thème de la présentation influence-t-il les couleurs des segments et des étiquettes ?

Les couleurs du graphique héritent du thème/palette de la présentation, sauf si vous définissez explicitement les remplissages ou les polices. Pour des résultats cohérents, verrouillez les remplissages solides et le formatage du texte aux niveaux requis.

L’exportation en PDF/PNG conservera-t-elle les couleurs de branche personnalisées et les paramètres d’étiquette ?

Oui. Lors de l’exportation de la présentation, les paramètres du graphique (remplissages, étiquettes) sont conservés dans les formats de sortie car Aspose.Slides rend le graphique avec le format appliqué.

Puis-je calculer les coordonnées réelles d’une étiquette/élément pour placer une superposition personnalisée au-dessus du graphique ?

Oui. Une fois la mise en page du graphique validée, les coordonnées réelles x et y sont disponibles pour les éléments (par exemple, un DataLabel), ce qui aide à positionner précisément les superpositions.