Personalizza i punti dati nei grafici Treemap e Sunburst usando Java
Introduzione
Tra gli altri tipi di grafici PowerPoint, esistono due tipi “gerarchici” – Treemap e Sunburst (conosciuti anche come Sunburst Graph, Sunburst Diagram, Radial Chart, Radial Graph o Multi Level Pie Chart). Questi grafici mostrano dati gerarchici organizzati come un albero – dalle foglie fino alla parte superiore del ramo. Le foglie sono definite dai punti dati della serie, e ogni livello di raggruppamento annidato successivo è definito dalla categoria corrispondente. Aspose.Slides per Java consente di formattare i punti dati dei grafici Sunburst e Treemap in Java.
Ecco un grafico Sunburst, in cui i dati nella colonna Series1 definiscono i nodi foglia, mentre le altre colonne definiscono i punti dati gerarchici:
Iniziamo aggiungendo un nuovo grafico Sunburst alla presentazione:
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();
}
Se è necessario formattare i punti dati del grafico, dovremmo utilizzare quanto segue:
IChartDataPointLevelsManager, IChartDataPointLevel classi e il metodo IChartDataPoint.getDataPointLevels forniscono l’accesso alla formattazione dei punti dati dei grafici Treemap e Sunburst. IChartDataPointLevelsManager è usato per accedere a categorie a più livelli – rappresenta il contenitore di IChartCategoryLevelsManager con le proprietà aggiunte specifiche per i punti dati. La classe IChartDataPointLevel ha due metodi: getFormat e getDataLabel che forniscono l’accesso alle impostazioni corrispondenti.
Mostra il Valore di un Punto Dati
Mostra il valore del punto dati “Leaf 4”:
IChartDataPointCollection dataPoints = chart.getChartData().getSeries().get_Item(0).getDataPoints();
dataPoints.get_Item(3).getDataPointLevels().get_Item(0).getLabel().getDataLabelFormat().setShowValue(true);
Imposta l’Etichetta e il Colore di un Punto Dati
Imposta l’etichetta del punto dati “Branch 1” per mostrare il nome della serie (“Series1”) invece del nome della categoria. Quindi imposta il colore del testo su giallo:
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);
Imposta il Colore del Ramo di un Punto Dati
Cambia il colore del ramo “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();
}
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 pre‑elaborando i dati.
In che modo il tema della presentazione influisce sui colori dei segmenti e delle etichette?
I colori del grafico ereditano il tema/palette della presentazione, a meno che non impostiate esplicitamente riempimenti/caratteri. Per risultati coerenti, fissate riempimenti solidi e la formattazione del testo nei livelli richiesti.
L’esportazione in PDF/PNG manterrà 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 aiuta a posizionare con precisione gli overlay.