Crea o aggiorna grafici di presentazione PowerPoint in Python
Panoramica
Questo articolo fornisce una guida completa su come creare e personalizzare grafici utilizzando Aspose.Slides per Python tramite .NET. Imparerai come aggiungere programmaticamente un grafico a una diapositiva, popolarlo con dati e applicare varie opzioni di formattazione per soddisfare i requisiti di design specifici. Durante tutto l’articolo, esempi di codice dettagliati illustrano ogni passaggio, dall’inizializzazione della presentazione e dell’oggetto grafico alla configurazione di serie, assi e legende. Seguendo questa guida, otterrai una solida comprensione di come integrare la generazione dinamica di grafici nelle tue applicazioni Python, semplificando il processo di creazione di presentazioni basate sui dati.
Creare un Grafico
I grafici aiutano le persone a visualizzare rapidamente i dati e a ottenere insight che potrebbero non essere immediatamente evidenti da una tabella o da un foglio di calcolo.
Perché creare grafici?
Utilizzando i grafici, è possibile:
- aggregare, condensare o sintetizzare grandi quantità di dati in una singola diapositiva di una presentazione;
- evidenziare schemi e tendenze nei dati;
- dedurre la direzione e lo slancio dei dati nel tempo o rispetto a un’unità di misura specifica;
- individuare outlier, aberrazioni, deviazioni, errori e dati senza senso;
- comunicare o presentare dati complessi.
In PowerPoint è possibile creare grafici tramite la funzione Inserisci, che fornisce modelli per progettare molti tipi di grafici. Con Aspose.Slides è possibile creare sia grafici standard (basati su tipi di grafico popolari) sia grafici personalizzati.
Note
Utilizza l’enumerazione ChartType del modulo aspose.slides.charts. I valori di questa enumerazione corrispondono a diversi tipi di grafico.Creare grafici a colonne raggruppate
Questo esempio utilizza add_chart per creare un grafico a colonne raggruppate che confronta due serie su tre categorie. Le serie usano riempimenti rosso e verde, e le etichette dimostrano i nomi delle categorie, i nomi delle serie e i valori. L’indice del foglio di lavoro 0 si riferisce al primo foglio del workbook del grafico incorporato.
import aspose.pydrawing as draw
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 20, 20, 500, 300)
chart.chart_title.add_text_frame_for_overriding("Sample Title")
chart.chart_title.text_frame_for_overriding.text_frame_format.center_text = slides.NullableBool.TRUE
chart.chart_title.height = 20
chart.has_title = True
workbook = chart.chart_data.chart_data_workbook
worksheet_index = 0
chart.chart_data.series.clear()
chart.chart_data.categories.clear()
series_name_cell = workbook.get_cell(worksheet_index, 0, 1, "Series 1")
chart.chart_data.series.add(series_name_cell, chart.type)
series_name_cell = workbook.get_cell(worksheet_index, 0, 2, "Series 2")
chart.chart_data.series.add(series_name_cell, chart.type)
category_cell = workbook.get_cell(worksheet_index, 1, 0, "Category 1")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(worksheet_index, 2, 0, "Category 2")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(worksheet_index, 3, 0, "Category 3")
chart.chart_data.categories.add(category_cell)
series = chart.chart_data.series[0]
value_cell = workbook.get_cell(worksheet_index, 1, 1, 20)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 2, 1, 50)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 3, 1, 30)
series.data_points.add_data_point_for_bar_series(value_cell)
series.format.fill.fill_type = slides.FillType.SOLID
series.format.fill.solid_fill_color.color = draw.Color.red
series = chart.chart_data.series[1]
value_cell = workbook.get_cell(worksheet_index, 1, 2, 30)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 2, 2, 10)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 3, 2, 60)
series.data_points.add_data_point_for_bar_series(value_cell)
series.format.fill.fill_type = slides.FillType.SOLID
series.format.fill.solid_fill_color.color = draw.Color.green
label = series.data_points[0].label
label.data_label_format.show_category_name = True
label = series.data_points[1].label
label.data_label_format.show_series_name = True
label = series.data_points[2].label
label.data_label_format.show_value = True
label.data_label_format.show_series_name = True
label.data_label_format.separator = "/"
presentation.save("AsposeChart.pptx", slides.export.SaveFormat.PPTX)
Il risultato:

Creare grafici a dispersione
I grafici a dispersione (noti anche come scatter plot o grafici x‑y) sono spesso usati per verificare pattern o dimostrare correlazioni tra due variabili.
Utilizza un grafico a dispersione quando:
- Hai dati numerici accoppiati.
- Hai due variabili che si associano bene.
- Vuoi determinare se le due variabili sono correlate.
- Hai una variabile indipendente con più valori per una variabile dipendente.
Questo esempio traccia due insiemi di valori x‑y. La prima serie utilizza linee rette con marcatori a stella, mentre la seconda usa linee lisce con marcatori a cerchio; entrambe usano una size di 10. La proprietà symbol controlla la forma del marcatore.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.SCATTER_WITH_SMOOTH_LINES, 20, 20, 500, 300)
workbook = chart.chart_data.chart_data_workbook
worksheet_index = 0
chart.chart_data.series.clear()
series_name_cell = workbook.get_cell(worksheet_index, 1, 1, "Series 1")
chart.chart_data.series.add(series_name_cell, chart.type)
series_name_cell = workbook.get_cell(worksheet_index, 1, 3, "Series 2")
chart.chart_data.series.add(series_name_cell, chart.type)
series = chart.chart_data.series[0]
x_value_cell = workbook.get_cell(worksheet_index, 2, 1, 1)
y_value_cell = workbook.get_cell(worksheet_index, 2, 2, 3)
series.data_points.add_data_point_for_scatter_series(x_value_cell, y_value_cell)
x_value_cell = workbook.get_cell(worksheet_index, 3, 1, 2)
y_value_cell = workbook.get_cell(worksheet_index, 3, 2, 10)
series.data_points.add_data_point_for_scatter_series(x_value_cell, y_value_cell)
series.type = charts.ChartType.SCATTER_WITH_STRAIGHT_LINES_AND_MARKERS
series.marker.size = 10
series.marker.symbol = charts.MarkerStyleType.STAR
series = chart.chart_data.series[1]
x_value_cell = workbook.get_cell(worksheet_index, 2, 3, 5)
y_value_cell = workbook.get_cell(worksheet_index, 2, 4, 2)
series.data_points.add_data_point_for_scatter_series(x_value_cell, y_value_cell)
x_value_cell = workbook.get_cell(worksheet_index, 3, 3, 3)
y_value_cell = workbook.get_cell(worksheet_index, 3, 4, 1)
series.data_points.add_data_point_for_scatter_series(x_value_cell, y_value_cell)
x_value_cell = workbook.get_cell(worksheet_index, 4, 3, 2)
y_value_cell = workbook.get_cell(worksheet_index, 4, 4, 2)
series.data_points.add_data_point_for_scatter_series(x_value_cell, y_value_cell)
x_value_cell = workbook.get_cell(worksheet_index, 5, 3, 5)
y_value_cell = workbook.get_cell(worksheet_index, 5, 4, 1)
series.data_points.add_data_point_for_scatter_series(x_value_cell, y_value_cell)
series.marker.size = 10
series.marker.symbol = charts.MarkerStyleType.CIRCLE
presentation.save("AsposeChart.pptx", slides.export.SaveFormat.PPTX)
Il risultato:

Creare grafici a torta
I grafici a torta sono migliori per mostrare la relazione parte‑intero nei dati, specialmente quando i dati contengono etichette categoriche con valori numerici. Tuttavia, se i tuoi dati contengono molte parti o etichette, potresti considerare l’uso di un grafico a barre.
Questo esempio crea un grafico a torta con tre valori trimestrali. Ogni fetta ha un riempimento e un bordo personalizzati, e le etichette mostrano diverse combinazioni di valori, percentuali e informazioni sulla serie. La proprietà first_slice_angle imposta la prima fetta a partire da 180 gradi.
import aspose.pydrawing as draw
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.PIE, 20, 20, 500, 300)
chart.chart_title.add_text_frame_for_overriding("Sample Title")
chart.chart_title.text_frame_for_overriding.text_frame_format.center_text = slides.NullableBool.TRUE
chart.chart_title.height = 20
chart.has_title = True
chart.chart_data.series[0].labels.default_data_label_format.show_value = True
workbook = chart.chart_data.chart_data_workbook
worksheet_index = 0
chart.chart_data.series.clear()
chart.chart_data.categories.clear()
category_cell = workbook.get_cell(0, 1, 0, "1st Qtr")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, 2, 0, "2nd Qtr")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, 3, 0, "3rd Qtr")
chart.chart_data.categories.add(category_cell)
series_name_cell = workbook.get_cell(0, 0, 1, "Series 1")
series = chart.chart_data.series.add(series_name_cell, chart.type)
value_cell = workbook.get_cell(worksheet_index, 1, 1, 20)
series.data_points.add_data_point_for_pie_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 2, 1, 50)
series.data_points.add_data_point_for_pie_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 3, 1, 30)
series.data_points.add_data_point_for_pie_series(value_cell)
chart.chart_data.series_groups[0].is_color_varied = True
first_slice = series.data_points[0]
first_slice.format.fill.fill_type = slides.FillType.SOLID
first_slice.format.fill.solid_fill_color.color = draw.Color.cyan
first_slice.format.line.fill_format.fill_type = slides.FillType.SOLID
first_slice.format.line.fill_format.solid_fill_color.color = draw.Color.gray
first_slice.format.line.width = 3.0
first_slice.format.line.style = slides.LineStyle.THIN_THICK
first_slice.format.line.dash_style = slides.LineDashStyle.LARGE_DASH
second_slice = series.data_points[1]
second_slice.format.fill.fill_type = slides.FillType.SOLID
second_slice.format.fill.solid_fill_color.color = draw.Color.brown
second_slice.format.line.fill_format.fill_type = slides.FillType.SOLID
second_slice.format.line.fill_format.solid_fill_color.color = draw.Color.blue
second_slice.format.line.width = 3.0
second_slice.format.line.style = slides.LineStyle.SINGLE
second_slice.format.line.dash_style = slides.LineDashStyle.LARGE_DASH_DOT
third_slice = series.data_points[2]
third_slice.format.fill.fill_type = slides.FillType.SOLID
third_slice.format.fill.solid_fill_color.color = draw.Color.coral
third_slice.format.line.fill_format.fill_type = slides.FillType.SOLID
third_slice.format.line.fill_format.solid_fill_color.color = draw.Color.red
third_slice.format.line.width = 2.0
third_slice.format.line.style = slides.LineStyle.THIN_THIN
third_slice.format.line.dash_style = slides.LineDashStyle.LARGE_DASH_DOT_DOT
first_label = series.data_points[0].label
first_label.data_label_format.show_value = True
second_label = series.data_points[1].label
second_label.data_label_format.show_value = True
second_label.data_label_format.show_legend_key = True
second_label.data_label_format.show_percentage = True
third_label = series.data_points[2].label
third_label.data_label_format.show_series_name = True
third_label.data_label_format.show_percentage = True
series.labels.default_data_label_format.show_leader_lines = True
chart.chart_data.series_groups[0].first_slice_angle = 180
presentation.save("PieChart.pptx", slides.export.SaveFormat.PPTX)
Il risultato:

Per migliorare la leggibilità delle etichette esterne alla torta, consulta Format Leader Lines per un esempio che posiziona le etichette e personalizza colore, larghezza, trasparenza e stile tratteggio delle linee.
Creare grafici a linee
I grafici a linee (noti anche come line graph) sono migliori nelle situazioni in cui vuoi dimostrare variazioni di valore nel tempo. Con un grafico a linee, è possibile confrontare una grande quantità di dati contemporaneamente, monitorare cambiamenti e tendenze nel tempo, evidenziare anomalie nelle serie di dati e altro ancora.
Questo esempio utilizza add_chart per creare un grafico a linee con serie e categorie predefinite, quindi salva la presentazione in formato PPTX.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
line_chart = slide.shapes.add_chart(charts.ChartType.LINE, 20, 20, 500, 300)
presentation.save("lineChart.pptx", slides.export.SaveFormat.PPTX)
Per impostazione predefinita, i punti di un grafico a linee sono collegati da linee continue rette. Se vuoi che i punti siano collegati da linee tratteggiate, imposta dash_style su un valore di LineDashStyle:
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
line_chart = slide.shapes.add_chart(charts.ChartType.LINE, 20, 20, 500, 300)
for series in line_chart.chart_data.series:
series.format.line.dash_style = slides.LineDashStyle.DASH
Il risultato:

Creare grafici a mappa ad albero
I grafici a mappa ad albero sono ideali per dati di vendita quando vuoi mostrare la dimensione relativa delle categorie di dati e attirare rapidamente l’attenzione sugli elementi che contribuiscono maggiormente all’interno di ciascuna categoria.
Questo esempio crea una mappa ad albero con otto foglie raggruppate in quattro tronchi e due rami. Il metodo set_grouping_item assegna i tronchi al livello di raggruppamento 1 e i rami al livello 2. I valori determinano le dimensioni relative dei rettangoli, mentre le etichette di categoria e le etichette genitore sovrapposte identificano la gerarchia.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.TREEMAP, 20, 20, 500, 300)
chart.chart_data.categories.clear()
chart.chart_data.series.clear()
workbook = chart.chart_data.chart_data_workbook
workbook.clear(0)
# Ramo 1
category_cell = workbook.get_cell(0, "C1", "Leaf1")
leaf = chart.chart_data.categories.add(category_cell)
leaf.grouping_levels.set_grouping_item(1, "Stem1")
leaf.grouping_levels.set_grouping_item(2, "Branch1")
category_cell = workbook.get_cell(0, "C2", "Leaf2")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "C3", "Leaf3")
leaf = chart.chart_data.categories.add(category_cell)
leaf.grouping_levels.set_grouping_item(1, "Stem2")
category_cell = workbook.get_cell(0, "C4", "Leaf4")
chart.chart_data.categories.add(category_cell)
# Ramo 2
category_cell = workbook.get_cell(0, "C5", "Leaf5")
leaf = chart.chart_data.categories.add(category_cell)
leaf.grouping_levels.set_grouping_item(1, "Stem3")
leaf.grouping_levels.set_grouping_item(2, "Branch2")
category_cell = workbook.get_cell(0, "C6", "Leaf6")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "C7", "Leaf7")
leaf = chart.chart_data.categories.add(category_cell)
leaf.grouping_levels.set_grouping_item(1, "Stem4")
category_cell = workbook.get_cell(0, "C8", "Leaf8")
chart.chart_data.categories.add(category_cell)
series = chart.chart_data.series.add(charts.ChartType.TREEMAP)
series.labels.default_data_label_format.show_category_name = True
value_cell = workbook.get_cell(0, "D1", 4)
series.data_points.add_data_point_for_treemap_series(value_cell)
value_cell = workbook.get_cell(0, "D2", 5)
series.data_points.add_data_point_for_treemap_series(value_cell)
value_cell = workbook.get_cell(0, "D3", 3)
series.data_points.add_data_point_for_treemap_series(value_cell)
value_cell = workbook.get_cell(0, "D4", 6)
series.data_points.add_data_point_for_treemap_series(value_cell)
value_cell = workbook.get_cell(0, "D5", 9)
series.data_points.add_data_point_for_treemap_series(value_cell)
value_cell = workbook.get_cell(0, "D6", 9)
series.data_points.add_data_point_for_treemap_series(value_cell)
value_cell = workbook.get_cell(0, "D7", 4)
series.data_points.add_data_point_for_treemap_series(value_cell)
value_cell = workbook.get_cell(0, "D8", 3)
series.data_points.add_data_point_for_treemap_series(value_cell)
series.parent_label_layout = charts.ParentLabelLayoutType.OVERLAPPING
presentation.save("Treemap.pptx", slides.export.SaveFormat.PPTX)
Il risultato:

Creare grafici a cascata
Un grafico a cascata mostra come le variazioni positive e negative contribuiscono a un valore finale. Ad esempio, un’analisi di profitto può partire dal fatturato, sottrarre i costi e aggiungere altri introiti. Le colonne di variazione fluttuano tra il valore corrente precedente e quello nuovo, mentre le colonne totali si estendono da zero al valore accumulato.
L’esempio seguente utilizza importi in migliaia di dollari statunitensi:
| Categoria | Valore nel workbook | Tipo di colonna |
|---|---|---|
| Ricavi | 1000 | Incremento |
| Costo del venduto | -400 | Decremento |
| Profitto lordo | 600 | Totale intermedio |
| Spese operative | -200 | Decremento |
| Altri introiti | 50 | Incremento |
| Utile netto | 450 | Totale finale |
Per contrassegnare un punto come totale intermedio o finale, imposta la proprietà set_as_total su True. Fornisci l’importo reale accumulato nella cella del workbook corrispondente: 600 per il profitto lordo (1000 - 400) e 450 per l’utile netto (600 - 200 + 50). La proprietà segna la colonna come totale; non calcola né popola il valore della cella. Non usare zero come segnaposto né fornire un’altra variazione per un punto totale. Una colonna totale visualizza il valore accumulato senza aggiungerlo nuovamente al valore corrente.
Questo esempio completo C# crea un grafico usando il membro Waterfall di ChartType, cancella i dati predefiniti e riempie il workbook incorporato. L’indice del foglio 0 seleziona il primo foglio; la colonna A contiene i nomi delle categorie e la colonna B i valori. Ogni cella valore viene aggiunta con add_data_point_for_waterfall_series. Gli indici dei punti basati su zero 2 e 5 identificano i totali intermedi e finali. Abilitando show_value si visualizzano gli importi sulle colonne. Non è necessaria alcuna presentazione o workbook di input.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.WATERFALL, 20, 20, 680, 200)
chart.has_title = True
chart.chart_title.add_text_frame_for_overriding("Profit breakdown (USD thousands)")
chart.chart_title.overlay = False
chart.has_legend = False
chart.chart_data.series.clear()
chart.chart_data.categories.clear()
workbook = chart.chart_data.chart_data_workbook
worksheet_index = 0
workbook.clear(worksheet_index)
series_name_cell = workbook.get_cell(worksheet_index, 0, 1, "Profit")
series = chart.chart_data.series.add(series_name_cell, charts.ChartType.WATERFALL)
categories = ["Revenue", "Cost of sales", "Gross profit", "Operating expenses", "Other income", "Net profit"]
values = [1000, -400, 600, -200, 50, 450]
for i in range(len(categories)):
category_cell = workbook.get_cell(worksheet_index, i + 1, 0, categories[i])
chart.chart_data.categories.add(category_cell)
value_cell = workbook.get_cell(worksheet_index, i + 1, 1, values[i])
series.data_points.add_data_point_for_waterfall_series(value_cell)
# I terzo e sesto punti rappresentano totali, non cambiamenti aggiuntivi.
series.data_points[2].set_as_total = True
series.data_points[5].set_as_total = True
series.show_connector_lines = True
series.labels.default_data_label_format.show_value = True
presentation.save("WaterfallChart.pptx", slides.export.SaveFormat.PPTX)
Imposta la proprietà a livello di serie show_connector_lines su True per mostrare le linee che collegano colonne consecutive e rendere più semplice il monitoraggio del valore corrente. Per nascondere queste linee, sostituisci l’assegnazione nell’esempio con series.show_connector_lines = False prima del salvataggio. Questo modifica solo la visibilità delle linee, non i dati o i totali.
La presentazione salvata mostra un profitto lordo di 600 e un utile netto di 450, entrambi i totali partono da zero:

Creare grafici di borsa
I grafici di borsa vengono usati per visualizzare dati finanziari come prezzi di apertura, massimo, minimo e chiusura, aiutando ad analizzare tendenze di mercato e volatilità. Offrono insight essenziali sulle performance azionarie, supportando investitori e analisti nelle decisioni informate.
Questo esempio crea un grafico open‑high‑low‑close con quattro serie in quest’ordine e tre categorie. La proprietà has_up_down_bars abilita le barre up/down, e hi_low_lines_format controlla le linee alto‑basso che mostrano l’intervallo di prezzo, mentre le linee delle serie individuali e le linee di griglia orizzontali minori sono nascoste.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.OPEN_HIGH_LOW_CLOSE, 20, 20, 500, 300, False)
workbook = chart.chart_data.chart_data_workbook
category_cell = workbook.get_cell(0, 1, 0, "A")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, 2, 0, "B")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, 3, 0, "C")
chart.chart_data.categories.add(category_cell)
series_name_cell = workbook.get_cell(0, 0, 1, "Open")
chart.chart_data.series.add(series_name_cell, charts.ChartType.OPEN_HIGH_LOW_CLOSE)
series_name_cell = workbook.get_cell(0, 0, 2, "High")
chart.chart_data.series.add(series_name_cell, charts.ChartType.OPEN_HIGH_LOW_CLOSE)
series_name_cell = workbook.get_cell(0, 0, 3, "Low")
chart.chart_data.series.add(series_name_cell, charts.ChartType.OPEN_HIGH_LOW_CLOSE)
series_name_cell = workbook.get_cell(0, 0, 4, "Close")
chart.chart_data.series.add(series_name_cell, charts.ChartType.OPEN_HIGH_LOW_CLOSE)
series = chart.chart_data.series[0]
value_cell = workbook.get_cell(0, 1, 1, 72)
series.data_points.add_data_point_for_stock_series(value_cell)
value_cell = workbook.get_cell(0, 2, 1, 25)
series.data_points.add_data_point_for_stock_series(value_cell)
value_cell = workbook.get_cell(0, 3, 1, 38)
series.data_points.add_data_point_for_stock_series(value_cell)
series = chart.chart_data.series[1]
value_cell = workbook.get_cell(0, 1, 2, 172)
series.data_points.add_data_point_for_stock_series(value_cell)
value_cell = workbook.get_cell(0, 2, 2, 57)
series.data_points.add_data_point_for_stock_series(value_cell)
value_cell = workbook.get_cell(0, 3, 2, 57)
series.data_points.add_data_point_for_stock_series(value_cell)
series = chart.chart_data.series[2]
value_cell = workbook.get_cell(0, 1, 3, 12)
series.data_points.add_data_point_for_stock_series(value_cell)
value_cell = workbook.get_cell(0, 2, 3, 12)
series.data_points.add_data_point_for_stock_series(value_cell)
value_cell = workbook.get_cell(0, 3, 3, 13)
series.data_points.add_data_point_for_stock_series(value_cell)
series = chart.chart_data.series[3]
value_cell = workbook.get_cell(0, 1, 4, 25)
series.data_points.add_data_point_for_stock_series(value_cell)
value_cell = workbook.get_cell(0, 2, 4, 38)
series.data_points.add_data_point_for_stock_series(value_cell)
value_cell = workbook.get_cell(0, 3, 4, 50)
series.data_points.add_data_point_for_stock_series(value_cell)
chart.chart_data.series_groups[0].up_down_bars.has_up_down_bars = True
chart.chart_data.series_groups[0].hi_low_lines_format.line.fill_format.fill_type = slides.FillType.SOLID
for stock_series in chart.chart_data.series:
stock_series.format.line.fill_format.fill_type = slides.FillType.NO_FILL
chart.axes.vertical_axis.minor_grid_lines_format.line.fill_format.fill_type = slides.FillType.NO_FILL
presentation.save("Stock-chart.pptx", slides.export.SaveFormat.PPTX)
Il risultato:

Creare grafici a scatola e baffi
I grafici a scatola e baffi mostrano la distribuzione dei dati sintetizzando misure statistiche chiave, come la mediana, i quartili e i potenziali outlier. Sono particolarmente utili nell’analisi esplorativa dei dati e negli studi statistici per comprendere rapidamente la variabilità e identificare anomalie.
Questo esempio crea un grafico a scatola e baffi da sei valori. La proprietà quartile_method seleziona il calcolo quartile esclusivo. L’esempio abilita inoltre linee della media, marcatori della media, punti interni e punti outlier.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.BOX_AND_WHISKER, 20, 20, 500, 300)
chart.chart_data.categories.clear()
chart.chart_data.series.clear()
workbook = chart.chart_data.chart_data_workbook
workbook.clear(0)
category_cell = workbook.get_cell(0, "A1", "Category 1")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "A2", "Category 2")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "A3", "Category 3")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "A4", "Category 4")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "A5", "Category 5")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "A6", "Category 6")
chart.chart_data.categories.add(category_cell)
series = chart.chart_data.series.add(charts.ChartType.BOX_AND_WHISKER)
series.quartile_method = charts.QuartileMethodType.EXCLUSIVE
series.show_mean_line = True
series.show_mean_markers = True
series.show_inner_points = True
series.show_outlier_points = True
value_cell = workbook.get_cell(0, "B1", 15)
series.data_points.add_data_point_for_box_and_whisker_series(value_cell)
value_cell = workbook.get_cell(0, "B2", 41)
series.data_points.add_data_point_for_box_and_whisker_series(value_cell)
value_cell = workbook.get_cell(0, "B3", 16)
series.data_points.add_data_point_for_box_and_whisker_series(value_cell)
value_cell = workbook.get_cell(0, "B4", 10)
series.data_points.add_data_point_for_box_and_whisker_series(value_cell)
value_cell = workbook.get_cell(0, "B5", 23)
series.data_points.add_data_point_for_box_and_whisker_series(value_cell)
value_cell = workbook.get_cell(0, "B6", 16)
series.data_points.add_data_point_for_box_and_whisker_series(value_cell)
presentation.save("BoxAndWhisker.pptx", slides.export.SaveFormat.PPTX)
Creare grafici a imbuto
I grafici a imbuto visualizzano processi con fasi sequenziali, dove il volume di dati diminuisce man mano che si avanza da un passaggio al successivo. Sono particolarmente utili per analizzare i tassi di conversione, identificare colli di bottiglia e monitorare l’efficienza dei processi di vendita o marketing.
Questo esempio utilizza add_chart per aggiungere un grafico a imbuto alla prima diapositiva di una presentazione esistente. Sostituisce i dati predefiniti con sei categorie e valori da 50 a 500, quindi salva la presentazione aggiornata. La presentazione di input deve contenere almeno una diapositiva.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation("test.pptx") as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.FUNNEL, 50, 50, 500, 400)
chart.chart_data.categories.clear()
chart.chart_data.series.clear()
workbook = chart.chart_data.chart_data_workbook
workbook.clear(0)
category_cell = workbook.get_cell(0, "A1", "Category 1")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "A2", "Category 2")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "A3", "Category 3")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "A4", "Category 4")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "A5", "Category 5")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "A6", "Category 6")
chart.chart_data.categories.add(category_cell)
series = chart.chart_data.series.add(charts.ChartType.FUNNEL)
value_cell = workbook.get_cell(0, "B1", 50)
series.data_points.add_data_point_for_funnel_series(value_cell)
value_cell = workbook.get_cell(0, "B2", 100)
series.data_points.add_data_point_for_funnel_series(value_cell)
value_cell = workbook.get_cell(0, "B3", 200)
series.data_points.add_data_point_for_funnel_series(value_cell)
value_cell = workbook.get_cell(0, "B4", 300)
series.data_points.add_data_point_for_funnel_series(value_cell)
value_cell = workbook.get_cell(0, "B5", 400)
series.data_points.add_data_point_for_funnel_series(value_cell)
value_cell = workbook.get_cell(0, "B6", 500)
series.data_points.add_data_point_for_funnel_series(value_cell)
presentation.save("Funnel.pptx", slides.export.SaveFormat.PPTX)
Il risultato:

Creare grafici a raggi
I grafici a raggi visualizzano dati gerarchici, mostrando i livelli come anelli concentrici. Aiutano a illustrare relazioni parte‑intero e sono ideali per rappresentare categorie e sottocategorie nidificate in modo chiaro e compatto.
Questo esempio crea un grafico a raggi con otto foglie raggruppate in quattro tronchi e due rami. Il metodo set_grouping_item assegna i tronchi al livello di raggruppamento 1 e i rami al livello 2. Le etichette di categoria identificano i segmenti, e i valori determinano le loro dimensioni relative.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.SUNBURST, 20, 20, 500, 300)
chart.chart_data.categories.clear()
chart.chart_data.series.clear()
workbook = chart.chart_data.chart_data_workbook
workbook.clear(0)
# Ramo 1
category_cell = workbook.get_cell(0, "C1", "Leaf1")
leaf = chart.chart_data.categories.add(category_cell)
leaf.grouping_levels.set_grouping_item(1, "Stem1")
leaf.grouping_levels.set_grouping_item(2, "Branch1")
category_cell = workbook.get_cell(0, "C2", "Leaf2")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "C3", "Leaf3")
leaf = chart.chart_data.categories.add(category_cell)
leaf.grouping_levels.set_grouping_item(1, "Stem2")
category_cell = workbook.get_cell(0, "C4", "Leaf4")
chart.chart_data.categories.add(category_cell)
# Ramo 2
category_cell = workbook.get_cell(0, "C5", "Leaf5")
leaf = chart.chart_data.categories.add(category_cell)
leaf.grouping_levels.set_grouping_item(1, "Stem3")
leaf.grouping_levels.set_grouping_item(2, "Branch2")
category_cell = workbook.get_cell(0, "C6", "Leaf6")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "C7", "Leaf7")
leaf = chart.chart_data.categories.add(category_cell)
leaf.grouping_levels.set_grouping_item(1, "Stem4")
category_cell = workbook.get_cell(0, "C8", "Leaf8")
chart.chart_data.categories.add(category_cell)
series = chart.chart_data.series.add(charts.ChartType.SUNBURST)
series.labels.default_data_label_format.show_category_name = True
value_cell = workbook.get_cell(0, "D1", 4)
series.data_points.add_data_point_for_sunburst_series(value_cell)
value_cell = workbook.get_cell(0, "D2", 5)
series.data_points.add_data_point_for_sunburst_series(value_cell)
value_cell = workbook.get_cell(0, "D3", 3)
series.data_points.add_data_point_for_sunburst_series(value_cell)
value_cell = workbook.get_cell(0, "D4", 6)
series.data_points.add_data_point_for_sunburst_series(value_cell)
value_cell = workbook.get_cell(0, "D5", 9)
series.data_points.add_data_point_for_sunburst_series(value_cell)
value_cell = workbook.get_cell(0, "D6", 9)
series.data_points.add_data_point_for_sunburst_series(value_cell)
value_cell = workbook.get_cell(0, "D7", 4)
series.data_points.add_data_point_for_sunburst_series(value_cell)
value_cell = workbook.get_cell(0, "D8", 3)
series.data_points.add_data_point_for_sunburst_series(value_cell)
presentation.save("Sunburst.pptx", slides.export.SaveFormat.PPTX)
Il risultato:

Creare grafici istogramma
Gli istogrammi mostrano come i valori numerici si distribuiscono su intervalli (bin). Per report mensili sui tempi di elaborazione degli ordini, utilizza la stessa larghezza di bin e soglie per mantenere gli intervalli coerenti e facilitare il confronto delle distribuzioni.
Imposta l’asse orizzontale aggregation_type su una modalità di AxisAggregationType. bin_width si applica solo a BY_BIN_WIDTH; number_of_bins si applica solo a BY_NUMBER_OF_BINS. Usa AUTOMATIC per lasciare che il grafico scelga i bin.
Usare una larghezza di bin fissa
Questo esempio raggruppa i tempi di elaborazione in intervalli di 10 minuti, con bin separati per i tempi ≤ 10 minuti e > 40 minuti. Abilita questi bin con is_underflow_bin e is_overflow_bin. Quando fornisci soglie esplicite per underflow_bin e overflow_bin, imposta is_automatic_underflow_bin e is_automatic_overflow_bin su False.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.HISTOGRAM, 20, 20, 680, 200)
chart.has_legend = False
chart.has_title = False
chart.chart_data.categories.clear()
chart.chart_data.series.clear()
workbook = chart.chart_data.chart_data_workbook
workbook.clear(0)
series = chart.chart_data.series.add(charts.ChartType.HISTOGRAM)
values = [5, 10, 10, 11, 15, 20, 20, 21, 25, 30, 30, 31, 35, 40, 40, 41, 50]
for i, value in enumerate(values):
value_cell = workbook.get_cell(0, i, 0, value)
series.data_points.add_data_point_for_histogram_series(value_cell)
axis = chart.axes.horizontal_axis
axis.aggregation_type = charts.AxisAggregationType.BY_BIN_WIDTH
axis.bin_width = 10
axis.is_underflow_bin = True
axis.is_automatic_underflow_bin = False
axis.underflow_bin = 10
axis.is_overflow_bin = True
axis.is_automatic_overflow_bin = False
axis.overflow_bin = 40
presentation.save("Histogram-bin-width.pptx", slides.export.SaveFormat.PPTX)
La presentazione visualizzata in PowerPoint mostra conteggi di bin 3, 4, 4, 4 e 2. Il bin underflow include 5, 10, 10, quindi la sua soglia è inclusiva. Il bin overflow include solo 41, 50, quindi la sua soglia è esclusiva; i valori pari a 40 rimangono nell’intervallo precedente. I bin interni contengono valori maggiori del loro limite inferiore e minori o uguali al limite superiore.

Specificare il numero di bin
Per un livello di dettaglio fisso anziché intervalli fissi, richiedi cinque bin per gli stessi dati. Questo esempio lascia i bin underflow e overflow disabilitati. Il grafico determina la larghezza dai dati, quindi i limiti possono variare tra i report.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.HISTOGRAM, 20, 20, 680, 200)
chart.has_legend = False
chart.has_title = False
chart.chart_data.categories.clear()
chart.chart_data.series.clear()
workbook = chart.chart_data.chart_data_workbook
workbook.clear(0)
series = chart.chart_data.series.add(charts.ChartType.HISTOGRAM)
values = [5, 10, 10, 11, 15, 20, 20, 21, 25, 30, 30, 31, 35, 40, 40, 41, 50]
for i, value in enumerate(values):
value_cell = workbook.get_cell(0, i, 0, value)
series.data_points.add_data_point_for_histogram_series(value_cell)
axis = chart.axes.horizontal_axis
axis.aggregation_type = charts.AxisAggregationType.BY_NUMBER_OF_BINS
axis.number_of_bins = 5
presentation.save("Histogram-bin-count.pptx", slides.export.SaveFormat.PPTX)
I cinque bin hanno conteggi 4, 4, 4, 4 e 1. Confronta questa distribuzione con il risultato a larghezza fissa sopra: i valori di input sono identici, ma i limiti differiscono.

Creare grafici radar
I grafici radar visualizzano dati multivariati in un formato bidimensionale, consentendo un facile confronto di più variabili simultaneamente. Sono particolarmente utili per identificare pattern, punti di forza e debolezze su più metriche di prestazione o attributi.
Questo esempio utilizza add_chart per creare un grafico radar con serie e categorie predefinite, poi salva la presentazione in formato PPTX.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
slide.shapes.add_chart(charts.ChartType.RADAR, 20, 20, 500, 300)
presentation.save("Radar-chart.pptx", slides.export.SaveFormat.PPTX)
Il risultato:

Creare grafici multi‑categoria
I grafici multi‑categoria visualizzano dati che coinvolgono più raggruppamenti categorici, consentendo di confrontare valori su più dimensioni simultaneamente. Sono particolarmente utili quando è necessario analizzare tendenze e relazioni all’interno di set di dati complessi e multilivello.
Questo esempio crea un grafico a colonne raggruppate con otto categorie disposte in quattro coppie. Il metodo set_grouping_item assegna a ciascuna coppia un’etichetta condivisa al livello di raggruppamento 1, producendo un asse di categoria con etichette individuali e di gruppo.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 20, 20, 500, 300)
chart.chart_data.series.clear()
chart.chart_data.categories.clear()
workbook = chart.chart_data.chart_data_workbook
workbook.clear(0)
worksheet_index = 0
category_cell = workbook.get_cell(0, "c2", "A")
category = chart.chart_data.categories.add(category_cell)
category.grouping_levels.set_grouping_item(1, "Group1")
category_cell = workbook.get_cell(0, "c3", "B")
category = chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "c4", "C")
category = chart.chart_data.categories.add(category_cell)
category.grouping_levels.set_grouping_item(1, "Group2")
category_cell = workbook.get_cell(0, "c5", "D")
category = chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "c6", "E")
category = chart.chart_data.categories.add(category_cell)
category.grouping_levels.set_grouping_item(1, "Group3")
category_cell = workbook.get_cell(0, "c7", "F")
category = chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(0, "c8", "G")
category = chart.chart_data.categories.add(category_cell)
category.grouping_levels.set_grouping_item(1, "Group4")
category_cell = workbook.get_cell(0, "c9", "H")
category = chart.chart_data.categories.add(category_cell)
series_name_cell = workbook.get_cell(0, "D1", "Series 1")
series = chart.chart_data.series.add(series_name_cell, charts.ChartType.CLUSTERED_COLUMN)
value_cell = workbook.get_cell(worksheet_index, "D2", 10)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, "D3", 20)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, "D4", 30)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, "D5", 40)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, "D6", 50)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, "D7", 60)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, "D8", 70)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, "D9", 80)
series.data_points.add_data_point_for_bar_series(value_cell)
presentation.save("AsposeChart.pptx", slides.export.SaveFormat.PPTX)
Il risultato:

Creare grafici mappa
I grafici mappa visualizzano dati geografici associando informazioni a posizioni specifiche come paesi, stati o città. Sono particolarmente utili per analizzare tendenze regionali, dati demografici e distribuzioni spaziali in modo chiaro e visivamente coinvolgente.
Questo esempio utilizza add_chart per creare un grafico mappa con dati geografici predefiniti e lo salva per la visualizzazione in PowerPoint.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.MAP, 20, 20, 500, 300)
presentation.save("mapChart.pptx", slides.export.SaveFormat.PPTX)
Il risultato:

Note
L’immagine sopra mostra la presentazione salvata aperta in PowerPoint. Aspose.Slides scrive correttamente il grafico mappa e i suoi dati, ma non disegna i grafici mappa da sé: quando una diapositiva contenente un grafico mappa viene renderizzata in un’immagine o convertita in PDF o SVG, l’area del grafico risulta vuota. Le altre forme sulla stessa diapositiva non sono influenzate.Creare grafici combinati
Un grafico combinato (o combo chart) combina due o più tipi di grafico in un unico grafico. Questo grafico consente di evidenziare, confrontare o esaminare differenze tra due o più set di dati, aiutando a identificare relazioni tra di essi.

Questo esempio combina due serie a colonne raggruppate con una serie a linee su quattro categorie. Le colonne usano l’asse verticale primario, mentre plot_on_second_axis posiziona la linea su un asse verticale secondario a destra. Le funzioni di supporto configurano titolo, leggenda, etichette degli assi e linee di griglia.
import aspose.pydrawing as draw
import aspose.slides as slides
import aspose.slides.charts as charts
def create_combo_chart():
with slides.Presentation() as presentation:
chart = create_chart_with_first_series(presentation.slides[0])
add_second_series_to_chart(chart)
add_third_series_to_chart(chart)
set_primary_axes_format(chart)
set_secondary_axes_format(chart)
presentation.save("combo-chart.pptx", slides.export.SaveFormat.PPTX)
def create_chart_with_first_series(slide):
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 50, 50, 600, 400)
chart.has_title = True
chart.chart_title.add_text_frame_for_overriding("Chart Title")
chart.chart_title.overlay = False
portion_format = chart.chart_title.text_frame_for_overriding.paragraphs[0].paragraph_format.default_portion_format
portion_format.font_bold = slides.NullableBool.FALSE
portion_format.font_height = 18
chart.legend.position = charts.LegendPositionType.BOTTOM
chart.legend.text_format.portion_format.font_height = 12
chart.chart_data.series.clear()
chart.chart_data.categories.clear()
workbook = chart.chart_data.chart_data_workbook
worksheet_index = 0
category_cell = workbook.get_cell(worksheet_index, 1, 0, "Category 1")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(worksheet_index, 2, 0, "Category 2")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(worksheet_index, 3, 0, "Category 3")
chart.chart_data.categories.add(category_cell)
category_cell = workbook.get_cell(worksheet_index, 4, 0, "Category 4")
chart.chart_data.categories.add(category_cell)
series_name_cell = workbook.get_cell(worksheet_index, 0, 1, "Series 1")
series = chart.chart_data.series.add(series_name_cell, chart.type)
series.parent_series_group.overlap = -25
series.parent_series_group.gap_width = 220
value_cell = workbook.get_cell(worksheet_index, 1, 1, 4.3)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 2, 1, 2.5)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 3, 1, 3.5)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 4, 1, 4.5)
series.data_points.add_data_point_for_bar_series(value_cell)
return chart
def add_second_series_to_chart(chart):
workbook = chart.chart_data.chart_data_workbook
worksheet_index = 0
series_name_cell = workbook.get_cell(worksheet_index, 0, 2, "Series 2")
series = chart.chart_data.series.add(series_name_cell, charts.ChartType.CLUSTERED_COLUMN)
series.parent_series_group.overlap = -25
series.parent_series_group.gap_width = 220
value_cell = workbook.get_cell(worksheet_index, 1, 2, 2.4)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 2, 2, 4.4)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 3, 2, 1.8)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 4, 2, 2.8)
series.data_points.add_data_point_for_bar_series(value_cell)
def add_third_series_to_chart(chart):
workbook = chart.chart_data.chart_data_workbook
worksheet_index = 0
series_name_cell = workbook.get_cell(worksheet_index, 0, 3, "Series 3")
series = chart.chart_data.series.add(series_name_cell, charts.ChartType.LINE)
value_cell = workbook.get_cell(worksheet_index, 1, 3, 2.0)
series.data_points.add_data_point_for_line_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 2, 3, 2.0)
series.data_points.add_data_point_for_line_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 3, 3, 3.0)
series.data_points.add_data_point_for_line_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 4, 3, 5.0)
series.data_points.add_data_point_for_line_series(value_cell)
series.plot_on_second_axis = True
def set_primary_axes_format(chart):
horizontal_axis = chart.axes.horizontal_axis
horizontal_axis.text_format.portion_format.font_height = 12
horizontal_axis.format.line.fill_format.fill_type = slides.FillType.NO_FILL
set_axis_title(horizontal_axis, "X Axis")
vertical_axis = chart.axes.vertical_axis
vertical_axis.text_format.portion_format.font_height = 12
vertical_axis.format.line.fill_format.fill_type = slides.FillType.NO_FILL
set_axis_title(vertical_axis, "Y Axis 1")
major_grid_lines_format = vertical_axis.major_grid_lines_format.line.fill_format
major_grid_lines_format.fill_type = slides.FillType.SOLID
major_grid_lines_format.solid_fill_color.color = draw.Color.from_argb(217, 217, 217)
def set_secondary_axes_format(chart):
secondary_horizontal_axis = chart.axes.secondary_horizontal_axis
secondary_horizontal_axis.position = charts.AxisPositionType.BOTTOM
secondary_horizontal_axis.cross_type = charts.CrossesType.MAXIMUM
secondary_horizontal_axis.is_visible = False
secondary_horizontal_axis.major_grid_lines_format.line.fill_format.fill_type = slides.FillType.NO_FILL
secondary_horizontal_axis.minor_grid_lines_format.line.fill_format.fill_type = slides.FillType.NO_FILL
secondary_vertical_axis = chart.axes.secondary_vertical_axis
secondary_vertical_axis.position = charts.AxisPositionType.RIGHT
secondary_vertical_axis.text_format.portion_format.font_height = 12
secondary_vertical_axis.format.line.fill_format.fill_type = slides.FillType.NO_FILL
secondary_vertical_axis.major_grid_lines_format.line.fill_format.fill_type = slides.FillType.NO_FILL
secondary_vertical_axis.minor_grid_lines_format.line.fill_format.fill_type = slides.FillType.NO_FILL
set_axis_title(secondary_vertical_axis, "Y Axis 2")
def set_axis_title(axis, axis_title):
axis.has_title = True
axis.title.overlay = False
title_portion_format = axis.title.add_text_frame_for_overriding(axis_title).paragraphs[0].paragraph_format.default_portion_format
title_portion_format.font_bold = slides.NullableBool.FALSE
title_portion_format.font_height = 12
create_combo_chart()
Aggiornare i grafici
Aspose.Slides per Python tramite .NET consente di aggiornare i grafici PowerPoint modificando dati, formattazione e stile. Questa funzionalità semplifica il processo di mantenimento delle presentazioni aggiornate con contenuti dinamici e garantisce che i grafici riflettano accuratamente i dati correnti e gli standard visivi.
Questo esempio aggiorna il grafico denominato “My chart” sulla prima diapositiva di una presentazione esistente. Richiede due serie di colonne con tre punti dati ciascuna, con etichette di categoria nella colonna A e nomi di serie nella prima riga del primo foglio di lavoro. L’esempio utilizza get_cell per modificare le celle del workbook, aggiorna i valori delle serie, aggiunge una terza serie e cambia il grafico in cilindri raggruppati tramite type.
import aspose.slides as slides
import aspose.slides.charts as charts
chart_name = "My chart"
with slides.Presentation("ExistingChart.pptx") as presentation:
slide = presentation.slides[0]
for shape in slide.shapes:
if isinstance(shape, charts.Chart) and shape.name == chart_name:
chart = shape
worksheet_index = 0
workbook = chart.chart_data.chart_data_workbook
workbook.get_cell(worksheet_index, 1, 0, "Modified Category 1")
workbook.get_cell(worksheet_index, 2, 0, "Modified Category 2")
series = chart.chart_data.series[0]
workbook.get_cell(worksheet_index, 0, 1, "New_Series 1")
series.data_points[0].value.data = 90
series.data_points[1].value.data = 123
series.data_points[2].value.data = 44
series = chart.chart_data.series[1]
workbook.get_cell(worksheet_index, 0, 2, "New_Series 2")
series.data_points[0].value.data = 23
series.data_points[1].value.data = 67
series.data_points[2].value.data = 99
series_name_cell = workbook.get_cell(worksheet_index, 0, 3, "Series 3")
series = chart.chart_data.series.add(series_name_cell, chart.type)
value_cell = workbook.get_cell(worksheet_index, 1, 3, 20)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 2, 3, 50)
series.data_points.add_data_point_for_bar_series(value_cell)
value_cell = workbook.get_cell(worksheet_index, 3, 3, 30)
series.data_points.add_data_point_for_bar_series(value_cell)
chart.type = charts.ChartType.CLUSTERED_CYLINDER
presentation.save("AsposeChartModified.pptx", slides.export.SaveFormat.PPTX)
Impostare l’intervallo dati per un grafico
Per ispezionare l’intervallo già usato da un grafico esistente, vedi Retrieve a Chart’s Data Range.
Aspose.Slides per Python tramite .NET offre la flessibilità di definire uno specifico intervallo dati da un foglio di lavoro come origine per i dati del tuo grafico. Ciò significa che puoi mappare direttamente una parte del tuo foglio di lavoro al grafico, controllando quali celle contribuiscono alle serie e alle categorie del grafico. Di conseguenza, è possibile aggiornare e sincronizzare facilmente i grafici con le ultime modifiche dei dati nel foglio, assicurando che le presentazioni PowerPoint riflettano informazioni attuali e precise.
Questo esempio utilizza set_range per impostare la fonte dati del grafico denominato “My chart” sulla prima diapositiva di una presentazione esistente a Sheet1!A1:B4. Il workbook del grafico deve contenere quel foglio e un intervallo popolato con un’intestazione di serie nella prima riga, etichette di categoria nella colonna A e tre valori nella colonna B.
import aspose.slides as slides
import aspose.slides.charts as charts
chart_name = "My chart"
with slides.Presentation("ExistingChart.pptx") as presentation:
slide = presentation.slides[0]
for shape in slide.shapes:
if isinstance(shape, charts.Chart) and shape.name == chart_name:
chart = shape
chart.chart_data.set_range("Sheet1!A1:B4")
presentation.save("SetDataRange.pptx", slides.export.SaveFormat.PPTX)
Usare marcatori predefiniti nei grafici
Quando usi marcatori predefiniti nei grafici, ogni serie ottiene automaticamente un simbolo marcatore predefinito diverso.
Questo esempio utilizza add_chart per creare un grafico con due serie a linee e una leggenda. Le impostazioni marker mantengono i simboli marcatore assegnati automaticamente. La prima serie include un valore negativo e un valore mancante, rappresentato da None, mentre la seconda ha un valore per ogni categoria.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.LINE_WITH_MARKERS, 10, 10, 400, 400)
chart.chart_data.series.clear()
chart.chart_data.categories.clear()
workbook = chart.chart_data.chart_data_workbook
series_name_cell = workbook.get_cell(0, 0, 1, "Series 1")
series = chart.chart_data.series.add(series_name_cell, chart.type)
category_cell = workbook.get_cell(0, 1, 0, "C1")
chart.chart_data.categories.add(category_cell)
value_cell = workbook.get_cell(0, 1, 1, 24)
series.data_points.add_data_point_for_line_series(value_cell)
category_cell = workbook.get_cell(0, 2, 0, "C2")
chart.chart_data.categories.add(category_cell)
value_cell = workbook.get_cell(0, 2, 1, 23)
series.data_points.add_data_point_for_line_series(value_cell)
category_cell = workbook.get_cell(0, 3, 0, "C3")
chart.chart_data.categories.add(category_cell)
value_cell = workbook.get_cell(0, 3, 1, -10)
series.data_points.add_data_point_for_line_series(value_cell)
category_cell = workbook.get_cell(0, 4, 0, "C4")
chart.chart_data.categories.add(category_cell)
value_cell = workbook.get_cell(0, 4, 1, None)
series.data_points.add_data_point_for_line_series(value_cell)
series_name_cell = workbook.get_cell(0, 0, 2, "Series 2")
second_series = chart.chart_data.series.add(series_name_cell, chart.type)
value_cell = workbook.get_cell(0, 1, 2, 30)
second_series.data_points.add_data_point_for_line_series(value_cell)
value_cell = workbook.get_cell(0, 2, 2, 10)
second_series.data_points.add_data_point_for_line_series(value_cell)
value_cell = workbook.get_cell(0, 3, 2, 60)
second_series.data_points.add_data_point_for_line_series(value_cell)
value_cell = workbook.get_cell(0, 4, 2, 40)
second_series.data_points.add_data_point_for_line_series(value_cell)
chart.has_legend = True
chart.legend.overlay = False
presentation.save("DefaultMarkersInChart.pptx", slides.export.SaveFormat.PPTX)
FAQ
Quali tipi di grafico sono supportati da Aspose.Slides per Python tramite .NET?
Aspose.Slides per Python tramite .NET supporta un’ampia gamma di tipi di grafico, tra cui barre, linee, torta, area, dispersione, istogramma, radar e molti altri. Questa flessibilità consente di scegliere il tipo di grafico più appropriato per le proprie esigenze di visualizzazione dei dati.
Come aggiungo un nuovo grafico a una diapositiva?
Per aggiungere un grafico, crei prima un’istanza della classe Presentation, recuperi la diapositiva desiderata tramite il suo indice, e poi chiami il metodo per aggiungere un grafico, specificando il tipo di grafico e i dati iniziali. Questo processo integra il grafico direttamente nella tua presentazione.
Come posso aggiornare i dati visualizzati in un grafico?
Puoi aggiornare i dati di un grafico accedendo al suo workbook dei dati (ChartDataWorkbook), cancellando eventuali serie e categorie predefinite, e aggiungendo i tuoi dati personalizzati. Questo ti permette di aggiornare programmaticamente il grafico per riflettere i dati più recenti.
È possibile personalizzare l’aspetto del grafico?
Sì, Aspose.Slides per Python tramite .NET offre ampie opzioni di personalizzazione. È possibile modificare colori, font, etichette, leggende e altri elementi di formattazione per adattare l’aspetto del grafico ai requisiti di design specifici.