Personalizza i punti dati nei grafici Treemap e Sunburst usando PHP

Introduzione

Tra gli altri tipi di grafici PowerPoint, esistono due tipi “gerarchici” – Treemap e Sunburst (chart anche noti come Sunburst Graph, Sunburst Diagram, Radial Chart, Radial Graph o Multi Level Pie Chart). Questi grafici visualizzano dati gerarchici organizzati come un albero – dalle foglie alla cima del ramo. Le foglie sono definite dai punti dati della serie, e ogni livello di raggruppamento nidificato successivo è definito dalla categoria corrispondente. Aspose.Slides for PHP via Java consente di formattare i punti dati di Sunburst Chart e Treemap .

Ecco un grafico Sunburst, in cui i dati nella colonna Series1 definiscono i nodi foglia, mentre le altre colonne definiscono i punti dati gerarchici:

todo:image_alt_text

Cominciamo aggiungendo un nuovo grafico Sunburst alla presentazione:

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

Se è necessario formattare i punti dati del grafico, occorre utilizzare quanto segue:

ChartDataPointLevelsManager, ChartDataPointLevel classi e ChartDataPoint::getDataPointLevels metodo forniscono l’accesso per formattare i punti dati di grafici Treemap e Sunburst. ChartDataPointLevelsManager viene utilizzato per accedere alle categorie multLivello – rappresenta il contenitore di ChartDataPointLevel oggetti. In pratica è un wrapper per ChartCategoryLevelsManager con le proprietà aggiunte specifiche per i punti dati. La classe ChartDataPointLevel ha due metodi: getFormat e getDataLabel che forniscono l’accesso alle impostazioni corrispondenti.

Mostra il valore del punto dati

Mostra il valore del punto dati “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

Imposta l’etichetta e il colore del punto dati

Imposta l’etichetta del dato “Branch 1” per visualizzare il nome della serie (“Series1”) invece del nome della categoria. Quindi imposta il colore del testo su giallo:

  $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

Imposta il colore del ramo del punto dati

Cambia il colore del ramo “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

Posso modificare l’ordine (ordinamento) dei segmenti in Sunburst/Treemap?

No. PowerPoint ordina i segmenti automaticamente (tipicamente per valori decrescenti, in senso orario). Aspose.Slides replica questo comportamento: non è possibile modificare direttamente l’ordine; è necessario farlo preelaborando i dati.

Come influisce il tema della presentazione sui colori dei segmenti e delle etichette?

I colori del grafico ereditano il tema/palette della presentazione, salvo che non vengano impostati esplicitamente riempimenti/font. Per risultati coerenti, fissare riempimenti solidi e la formattazione del testo nei livelli richiesti.

L’esportazione in PDF/PNG conserverà i colori personalizzati dei rami e le impostazioni delle etichette?

Sì. Durante l’esportazione della presentazione, le impostazioni del grafico (riempimenti, etichette) vengono conservate nei formati di output perché Aspose.Slides rende il grafico con la formattazione applicata.

Posso calcolare le coordinate effettive di un’etichetta/elemento per posizionare un overlay personalizzato sopra il grafico?

Sì. Dopo che il layout del grafico è stato convalidato, le coordinate x e y effettive sono disponibili per gli elementi (ad esempio, un DataLabel), il che facilita il posizionamento preciso degli overlay.