Gestire le serie di dati del grafico nelle presentazioni usando Java
Panoramica
Questo articolo descrive il ruolo di ChartSeries in Aspose.Slides, concentrandosi su come i dati sono strutturati e visualizzati all’interno delle presentazioni. Questi oggetti forniscono gli elementi fondamentali che definiscono set individuali di punti dati, categorie e parametri di aspetto in un grafico. Lavorando con ChartSeries, gli sviluppatori possono integrare agevolmente le fonti di dati sottostanti e mantenere il pieno controllo su come le informazioni vengono visualizzate, ottenendo presentazioni dinamiche basate sui dati che trasmettono chiaramente approfondimenti e analisi.
Una serie è una riga o una colonna di numeri tracciati in un grafico.

Impostare la sovrapposizione della serie di grafico
Con la proprietà IChartSeriesOverlap è possibile specificare quanto le barre e le colonne devono sovrapporsi in un grafico 2D (intervallo: -100 a 100). Questa proprietà si applica a tutte le serie del gruppo di serie genitore: è una proiezione della proprietà di gruppo appropriata. Pertanto, la proprietà è di sola lettura.
Utilizzare la proprietà di lettura/scrittura ParentSeriesGroup.Overlap per impostare il valore desiderato per Overlap.
- Creare un’istanza della classe Presentation.
- Aggiungere un grafico a colonne raggruppate su una diapositiva.
- Accedere alla prima serie del grafico.
- Accedere al
ParentSeriesGroupdella serie e impostare il valore di sovrapposizione desiderato. - Scrivere la presentazione modificata in un file PPTX.
Questo codice Java mostra come impostare la sovrapposizione per una serie di grafico:
Presentation pres = new Presentation();
try {
// Aggiunge il grafico
IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 600, 400, true);
IChartSeriesCollection series = chart.getChartData().getSeries();
if (series.get_Item(0).getOverlap() == 0)
{
// Imposta la sovrapposizione della serie
series.get_Item(0).getParentSeriesGroup().setOverlap((byte)-30);
}
// Scrive il file di presentazione su disco
pres.save("SetChartSeriesOverlap_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Modificare il colore della serie
Aspose.Slides per Java consente di modificare il colore di una serie in questo modo:
- Creare un’istanza della classe Presentation.
- Aggiungere un grafico alla diapositiva.
- Accedere alla serie di cui si vuole cambiare il colore.
- Impostare il tipo di riempimento e il colore di riempimento desiderati.
- Salvare la presentazione modificata.
Questo codice Java mostra come cambiare il colore di una serie:
Presentation pres = new Presentation("test.pptx");
try {
IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.Pie, 50, 50, 600, 400);
IChartDataPoint point = chart.getChartData().getSeries().get_Item(0).getDataPoints().get_Item(1);
point.setExplosion(30);
point.getFormat().getFill().setFillType(FillType.Solid);
point.getFormat().getFill().getSolidFillColor().setColor(Color.BLUE);
pres.save("output.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Modificare il colore della categoria della serie
Aspose.Slides per Java consente di modificare il colore di una categoria di serie in questo modo:
- Creare un’istanza della classe Presentation.
- Aggiungere un grafico alla diapositiva.
- Accedere alla categoria della serie di cui si vuole cambiare il colore.
- Impostare il tipo di riempimento e il colore di riempimento desiderati.
- Salvare la presentazione modificata.
Questo codice Java mostra come cambiare il colore di una categoria di serie:
Presentation pres = new Presentation();
try {
IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 600, 400);
IChartDataPoint point = chart.getChartData().getSeries().get_Item(0).getDataPoints().get_Item(0);
point.getFormat().getFill().setFillType(FillType.Solid);
point.getFormat().getFill().getSolidFillColor().setColor(Color.BLUE);
pres.save("output.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Modificare il nome della serie
Per impostazione predefinita, i nomi della legenda di un grafico sono il contenuto delle celle sopra ciascuna colonna o riga di dati.
Nel nostro esempio (immagine di esempio),
- le colonne sono Series 1, Series 2, e Series 3;
- le righe sono Category 1, Category 2, Category 3, e Category 4.
Aspose.Slides per Java consente di aggiornare o modificare il nome di una serie nei dati del grafico e nella legenda.
Questo codice Java mostra come modificare il nome di una serie nei dati del grafico ChartDataWorkbook:
Presentation pres = new Presentation();
try {
IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.Column3D, 50, 50, 600, 400, true);
IChartDataCell seriesCell = chart.getChartData().getChartDataWorkbook().getCell(0, 0, 1);
seriesCell.setValue("New name");
pres.save("pres.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Questo codice Java mostra come modificare il nome di una serie nella legenda tramite Series:
Presentation pres = new Presentation();
try {
IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.Column3D, 50, 50, 600, 400, true);
IChartSeries series = chart.getChartData().getSeries().get_Item(0);
IStringChartValue name = series.getName();
name.getAsCells().get_Item(0).setValue("New name");
} finally {
if (pres != null) pres.dispose();
}
Impostare il colore di riempimento automatico della serie di grafico
Aspose.Slides per Java consente di impostare il colore di riempimento automatico per le serie di grafico all’interno di un’area di tracciamento in questo modo:
- Creare un’istanza della classe Presentation.
- Ottenere il riferimento a una diapositiva tramite il suo indice.
- Aggiungere un grafico con dati predefiniti basato sul tipo preferito (nell’esempio seguente, abbiamo usato
ChartType.ClusteredColumn). - Accedere alla serie del grafico e impostare il colore di riempimento su Automatic.
- Salvare la presentazione in un file PPTX.
Questo codice Java mostra come impostare il colore di riempimento automatico per una serie di grafico:
Presentation pres = new Presentation();
try {
// Crea un grafico a colonne raggruppate
IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.ClusteredColumn, 100, 50, 600, 400);
// Imposta il formato di riempimento della serie su automatico
for (int i = 0; i < chart.getChartData().getSeries().size(); i++)
{
chart.getChartData().getSeries().get_Item(i).getAutomaticSeriesColor();
}
// Scrive il file di presentazione su disco
pres.save("AutoFillSeries_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Impostare il colore di riempimento invertito per una serie di grafico
Aspose.Slides consente di impostare il colore di riempimento invertito per le serie di grafico all’interno di un’area di tracciamento in questo modo:
- Creare un’istanza della classe Presentation.
- Ottenere il riferimento a una diapositiva tramite il suo indice.
- Aggiungere un grafico con dati predefiniti basato sul tipo preferito (nell’esempio seguente, abbiamo usato
ChartType.ClusteredColumn). - Accedere alla serie del grafico e impostare il colore di riempimento su invertito.
- Salvare la presentazione in un file PPTX.
Questo codice Java dimostra l’operazione:
Color inverColor = Color.RED;
Presentation pres = new Presentation();
try {
IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.ClusteredColumn, 100, 100, 400, 300);
IChartDataWorkbook workBook = chart.getChartData().getChartDataWorkbook();
chart.getChartData().getSeries().clear();
chart.getChartData().getCategories().clear();
// Aggiunge nuove serie e categorie
chart.getChartData().getSeries().add(workBook.getCell(0, 0, 1, "Series 1"), chart.getType());
chart.getChartData().getCategories().add(workBook.getCell(0, 1, 0, "Category 1"));
chart.getChartData().getCategories().add(workBook.getCell(0, 2, 0, "Category 2"));
chart.getChartData().getCategories().add(workBook.getCell(0, 3, 0, "Category 3"));
// Prende la prima serie del grafico e popola i suoi dati di serie.
IChartSeries series = chart.getChartData().getSeries().get_Item(0);
series.getDataPoints().addDataPointForBarSeries(workBook.getCell(0, 1, 1, -20));
series.getDataPoints().addDataPointForBarSeries(workBook.getCell(0, 2, 1, 50));
series.getDataPoints().addDataPointForBarSeries(workBook.getCell(0, 3, 1, -30));
Color seriesColor = series.getAutomaticSeriesColor();
series.setInvertIfNegative(true);
series.getFormat().getFill().setFillType(FillType.Solid);
series.getFormat().getFill().getSolidFillColor().setColor(seriesColor);
series.getInvertedSolidFillColor().setColor(inverColor);
pres.save("SetInvertFillColorChart_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Impostare una serie per invertire quando il valore è negativo
Aspose.Slides consente di impostare l’inversione tramite le proprietà IChartDataPoint.InvertIfNegative e ChartDataPoint.InvertIfNegative. Quando l’inversione è impostata tramite queste proprietà, il punto dati inverte i colori quando riceve un valore negativo.
Questo codice Java dimostra l’operazione:
Presentation pres = new Presentation();
try {
IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 600, 400, true);
IChartSeriesCollection series = chart.getChartData().getSeries();
chart.getChartData().getSeries().clear();
IChartSeries chartSeries = series.add(chart.getChartData().getChartDataWorkbook().getCell(0, "B1"), chart.getType());
chartSeries.getDataPoints().addDataPointForBarSeries(chart.getChartData().getChartDataWorkbook().getCell(0, "B2", -5));
chartSeries.getDataPoints().addDataPointForBarSeries(chart.getChartData().getChartDataWorkbook().getCell(0, "B3", 3));
chartSeries.getDataPoints().addDataPointForBarSeries(chart.getChartData().getChartDataWorkbook().getCell(0, "B4", -2));
chartSeries.getDataPoints().addDataPointForBarSeries(chart.getChartData().getChartDataWorkbook().getCell(0, "B5", 1));
chartSeries.setInvertIfNegative(false);
chartSeries.getDataPoints().get_Item(2).setInvertIfNegative(true);
pres.save("out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Cancellare i dati di un punto specifico
Aspose.Slides per Java consente di cancellare i dati DataPoints per una serie di grafico specifica in questo modo:
- Creare un’istanza della classe Presentation.
- Ottenere il riferimento a una diapositiva tramite il suo indice.
- Ottenere il riferimento a un grafico tramite il suo indice.
- Iterare tutti i
DataPointsdel grafico e impostareXValueeYValuea null. - Cancellare tutti i
DataPointsper la serie di grafico specifica. - Scrivere la presentazione modificata in un file PPTX.
Questo codice Java dimostra l’operazione:
Presentation pres = new Presentation("TestChart.pptx");
try {
ISlide sl = pres.getSlides().get_Item(0);
IChart chart = (IChart)sl.getShapes().get_Item(0);
for (IChartDataPoint dataPoint : chart.getChartData().getSeries().get_Item(0).getDataPoints())
{
dataPoint.getXValue().getAsCell().setValue(null);
dataPoint.getYValue().getAsCell().setValue(null);
}
chart.getChartData().getSeries().get_Item(0).getDataPoints().clear();
pres.save("ClearSpecificChartSeriesDataPointsData.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Impostare la larghezza del gap della serie
Aspose.Slides per Java consente di impostare la larghezza del gap di una serie tramite la proprietà GapWidth in questo modo:
- Creare un’istanza della classe Presentation.
- Accedere alla prima diapositiva.
- Aggiungere un grafico con dati predefiniti.
- Accedere a una qualsiasi serie del grafico.
- Impostare la proprietà
GapWidth. - Scrivere la presentazione modificata in un file PPTX.
Questo codice Java mostra come impostare la larghezza del gap di una serie:
// Crea una presentazione vuota
Presentation pres = new Presentation();
try {
// Accede alla prima diapositiva della presentazione
ISlide slide = pres.getSlides().get_Item(0);
// Aggiunge un grafico con dati predefiniti
IChart chart = slide.getShapes().addChart(ChartType.StackedColumn, 0, 0, 500, 500);
// Imposta l'indice del foglio dati del grafico
int defaultWorksheetIndex = 0;
// Ottiene il foglio dati del grafico
IChartDataWorkbook fact = chart.getChartData().getChartDataWorkbook();
// Aggiunge serie
chart.getChartData().getSeries().add(fact.getCell(defaultWorksheetIndex, 0, 1, "Series 1"), chart.getType());
chart.getChartData().getSeries().add(fact.getCell(defaultWorksheetIndex, 0, 2, "Series 2"), chart.getType());
// Aggiunge categorie
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 1, 0, "Caetegoty 1"));
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 2, 0, "Caetegoty 2"));
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 3, 0, "Caetegoty 3"));
// Prende la seconda serie del grafico
IChartSeries series = chart.getChartData().getSeries().get_Item(1);
// Popola i dati della serie
series.getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, 1, 1, 20));
series.getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, 2, 1, 50));
series.getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, 3, 1, 30));
series.getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, 1, 2, 30));
series.getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, 2, 2, 10));
series.getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, 3, 2, 60));
// Imposta il valore GapWidth
series.getParentSeriesGroup().setGapWidth(50);
// Salva la presentazione su disco
pres.save("GapWidth_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
FAQ
Esiste un limite al numero di serie che un singolo grafico può contenere?
Aspose.Slides non impone un tetto fisso al numero di serie aggiunte. Il limite pratico è determinato dalla leggibilità del grafico e dalla memoria disponibile per l’applicazione.
Cosa fare se le colonne all’interno di un raggruppamento sono troppo vicine o troppo distanti?
Regolare l’impostazione GapWidth per quella serie (o per il gruppo di serie genitore). Aumentare il valore amplia lo spazio tra le colonne, diminuendolo le avvicina.