Gestisci le serie di dati del grafico nelle presentazioni su Android

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 insiemi individuali di punti dati, categorie e parametri di aspetto in un grafico. Lavorando con ChartSeries, gli sviluppatori possono integrare senza problemi le fonti dati sottostanti e mantenere il pieno controllo su come le informazioni vengono visualizzate, ottenendo presentazioni dinamiche, guidate dai dati, che comunicano chiaramente approfondimenti e analisi.

Una serie è una riga o colonna di numeri tracciata in un grafico.

chart-series-powerpoint

Imposta la sovrapposizione della serie del grafico

Con il metodo IChartSeries.getOverlap è possibile determinare quanto le barre e le colonne devono sovrapporsi in un grafico 2D (intervallo: -100‑100). Questa proprietà si applica a tutte le serie del gruppo di serie padre: è una proiezione della proprietà di gruppo appropriata. Pertanto, questa proprietà è di sola lettura.

Utilizza il metodo di scrittura getParentSeriesGroup().setOverlap() per impostare il valore di sovrapposizione desiderato.

  1. Crea un’istanza della classe Presentation.
  2. Aggiungi un grafico a colonne raggruppate su una diapositiva.
  3. Accedi alla prima serie del grafico.
  4. Accedi al ParentSeriesGroup della serie del grafico e imposta il valore di sovrapposizione desiderato per la serie.
  5. Scrivi la presentazione modificata in un file PPTX.
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 della presentazione su disco
    pres.save("SetChartSeriesOverlap_out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Modifica il colore della serie

Aspose.Slides for Android via Java consente di modificare il colore di una serie in questo modo:

  1. Crea un’istanza della classe Presentation.
  2. Aggiungi un grafico sulla diapositiva.
  3. Accedi alla serie di cui vuoi cambiare il colore.
  4. Imposta il tipo di riempimento e il colore di riempimento desiderati.
  5. Salva la presentazione modificata.
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();
}

Modifica il colore della categoria della serie

Aspose.Slides for Android via Java consente di modificare il colore di una categoria di serie in questo modo:

  1. Crea un’istanza della classe Presentation.
  2. Aggiungi un grafico sulla diapositiva.
  3. Accedi alla categoria della serie di cui vuoi cambiare il colore.
  4. Imposta il tipo di riempimento e il colore di riempimento desiderati.
  5. Salva la presentazione modificata.
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();
}

Modifica il nome della serie

Per impostazione predefinita, i nomi della legenda di un grafico corrispondono al 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 for Android via 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 sua 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();
}

Imposta il colore di riempimento della serie del grafico

Aspose.Slides for Android via Java consente di impostare il colore di riempimento automatico per le serie del grafico all’interno di un’area di tracciamento in questo modo:

  1. Crea un’istanza della classe Presentation.
  2. Ottieni il riferimento di una diapositiva tramite il suo indice.
  3. Aggiungi un grafico con dati predefiniti basati sul tipo preferito (nell’esempio sotto, abbiamo usato ChartType.ClusteredColumn).
  4. Accedi alla serie del grafico e imposta il colore di riempimento su Automatic.
  5. Salva la presentazione in un file PPTX.
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 della presentazione su disco
    pres.save("AutoFillSeries_out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Imposta il colore di riempimento invertito per una serie del grafico

Aspose.Slides consente di impostare il colore di riempimento invertito per le serie del grafico all’interno di un’area di tracciamento in questo modo:

  1. Crea un’istanza della classe Presentation.
  2. Ottieni il riferimento di una diapositiva tramite il suo indice.
  3. Aggiungi un grafico con dati predefiniti basati sul tipo preferito (nell’esempio sotto, abbiamo usato ChartType.ClusteredColumn).
  4. Accedi alla serie del grafico e imposta il colore di riempimento su invertito.
  5. Salva la presentazione in un file PPTX.
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();
}

Imposta 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 usando queste proprietà, il punto dati inverte i suoi colori al ricevere un valore negativo.

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

Cancella i dati di un punto specifico

Aspose.Slides for Android via Java consente di cancellare i dati dei DataPoints per una serie di grafico specifica in questo modo:

  1. Crea un’istanza della classe Presentation.
  2. Ottieni il riferimento di una diapositiva tramite il suo indice.
  3. Ottieni il riferimento di un grafico tramite il suo indice.
  4. Itera tutti i DataPoints del grafico e imposta XValue e YValue a null.
  5. Cancella tutti i DataPoints per la serie di grafico specifica.
  6. Scrivi la presentazione modificata in un file PPTX.
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();
}

Imposta la larghezza dello spazio della serie

Aspose.Slides for Android via Java consente di impostare la larghezza dello spazio di una serie tramite la proprietà GapWidth in questo modo:

  1. Crea un’istanza della classe Presentation.
  2. Accedi alla prima diapositiva.
  3. Aggiungi un grafico con dati predefiniti.
  4. Accedi a qualsiasi serie del grafico.
  5. Imposta la proprietà GapWidth.
  6. Scrivi la presentazione modificata in un file PPTX.
// Crea una presentazione vuota 
    // Accede alla prima diapositiva della presentazione
    // Aggiunge un grafico con dati predefiniti
    // Imposta l'indice del foglio dati del grafico
    // Recupera il foglio di lavoro dei dati del grafico
    // Aggiunge serie
    // Aggiunge categorie
    // Prende la seconda serie del grafico
    // Popola i dati della serie
    // Imposta il valore GapWidth
    // Salva la presentazione su disco
    Presentation pres = new Presentation();
    try {
        // Accesses the presentation's first slide
        ISlide slide = pres.getSlides().get_Item(0);
        
        // Adds a chart with default data
        IChart chart = slide.getShapes().addChart(ChartType.StackedColumn, 0, 0, 500, 500);
        
        // Sets the index of the chart data sheet
        int defaultWorksheetIndex = 0;
        
        // Gets the chart data worksheet
        IChartDataWorkbook fact = chart.getChartData().getChartDataWorkbook();
        
        // Adds series
        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());
        
        // Adds Categories
        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"));
        
        // Takes the second chart series
        IChartSeries series = chart.getChartData().getSeries().get_Item(1);
        
        // Populates the series data
        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));
        
        // Sets GapWidth value
        series.getParentSeriesGroup().setGapWidth(50);
        
        // Saves presentation to disk
        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 limite fisso al numero di serie che è possibile aggiungere. Il limite pratico è determinato dalla leggibilità del grafico e dalla quantità di memoria disponibile per la tua applicazione.

Cosa succede se le colonne all’interno di un gruppo sono troppo vicine o troppo distanti?

Regola l’impostazione GapWidth per quella serie (o per il suo gruppo di serie padre). Aumentare il valore allarga lo spazio tra le colonne, mentre diminuirlo le avvicina.