Last chance! 50% off DataCamp Premium
Sale ends in
I grafici a torta sono tra i più usati per visualizzare le proporzioni. Probabilmente li conosci già: immagina una grande torta, o una forma di Emmental, tagliata in fette di dimensioni diverse.
Python offre diversi modi per creare grafici a torta. In questo tutorial ci concentreremo su come crearli in Python usando Matplotlib e Pandas, due tra i pacchetti più popolari per l’analisi dei dati in Python. Struttureremo l’articolo per metodo, così puoi concentrarti sull’approccio e sulla sintassi che si integrano meglio nel tuo flusso di lavoro.
Oltre a questi metodi, forniremo alcuni consigli per migliorare troubleshooting, accessibilità e usabilità dei grafici a torta. Infine, prenderemo in considerazione anche grafici alternativi che in certi scenari possono essere più adatti dei grafici a torta.
Ti mostrerò due modi diversi per creare un grafico a torta in Python, e potrai decidere tu quale preferisci. Entrambi sono opzioni popolari e valide, quindi non puoi sbagliare.
Iniziamo analizzando come creare un grafico a torta con Matplotlib.
Per questa sezione analizzeremo i dati sui diversi corsi disponibili nel catalogo corsi di DataCamp, che puoi trovare qui. (Ho consultato il catalogo e contato il numero di corsi disponibili per ciascuna tecnologia, creando una tabella con queste informazioni.)
Per creare il nostro primo grafico a torta con Matplotlib, possiamo usare la funzione plt.pie(). Useremo una lista con il numero di corsi disponibili per diverse tecnologie data e AI (ognuna rappresenta la dimensione della fetta), e una seconda lista con i nomi delle tecnologie, che includeremo nel grafico usando il parametro labels . In alternativa, possiamo usare plt.legend() per aggiungere una legenda separata.
Come al solito, non dimenticare di eseguire plt.show() alla fine del codice per visualizzare correttamente il grafico di Matplotlib.
import pandas as pd
import matplotlib.pyplot as plt
courses = [164, 127, 31, 31,12, 11]
labels = ['Python','R','SQL','Power BI','Excel','ChatGPT']
dictionary = {'courses':courses, 'labels':labels}
python_pie_chart_df = pd.DataFrame(dictionary)
plt.pie(x = python_pie_chart_df.courses, labels = python_pie_chart_df.labels)
plt.show()

plt.pie(x = python_pie_chart_df.courses)
plt.legend(labels = python_pie_chart_df.labels, loc = [0.95,0.35])
plt.show()

Inoltre, possiamo includere la percentuale di ciascuna fetta usando il parametro autopct. Nell’esempio seguente includiamo la dimensione delle fette con una cifra decimale.
plt.pie(x = python_pie_chart_df.courses, labels = python_pie_chart_df.labels, autopct='%1.1f%%')
plt.show()

I grafici a torta in Matplotlib, così come le loro singole fette, sono altamente personalizzabili. Vediamo alcune opzioni offerte dalla funzione pie.plot().
Per cambiare il colore delle fette possiamo usare il parametro colors. Lo useremo per applicare al nostro grafico la palette di colori di DataCamp.
datacamp_palette = ['#03ef62','#06bdfc','#ff6ea9','#ff931e','#ff5400','#7933ff']
plt.pie(x = python_pie_chart_df.courses, labels = python_pie_chart_df.labels, colors = datacamp_palette, autopct='%1.1f%%')
plt.show()

Decisamente meglio, giusto? Ma possiamo fare molto di più per personalizzare il nostro grafico a torta. Per esempio, possiamo regolare la distanza delle etichette e delle percentuali usando rispettivamente i parametri labeldistance e pctdistance, e scegliere un angolo di partenza del taglio con il parametro startangle.
plt.pie(x = python_pie_chart_df.courses, labels = python_pie_chart_df.labels, colors = datacamp_palette, autopct='%1.1f%%',
pctdistance= 0.8, labeldistance=1.1, startangle=180)
plt.show()

Infine, immagina di dover fare una presentazione e voler mettere in evidenza i corsi su R. Un modo pratico per farlo è “esplodere” quella fetta usando il parametro explode, come segue:
explode = (0, 0.1, 0, 0, 0, 0) # only "explode" the 2nd slice (i.e. 'R')
plt.pie(x = python_pie_chart_df.courses, labels = python_pie_chart_df.labels,
colors = datacamp_palette, autopct='%1.1f%%',
pctdistance= 0.8, labeldistance=1.1,
startangle=180, explode=explode)
plt.show()

Dopo aver creato il tuo grafico a torta, sei pronto a condividerlo con i collaboratori. Puoi farlo usando la funzione plt.savefig() , che prende come input il nome del file e permette di salvarlo in diversi formati, come .png, .jpg, .svg o .pdf. Inoltre, puoi usare dpi per cambiare la risoluzione dell’immagine.
Ecco un esempio di come salvare il grafico a torta in formato .jpg con 200 punti per pollice.
plt.pie(x = df.courses, labels = df.labels,
colors = datacamp_palette, autopct='%1.1f%%',
pctdistance= 0.8, labeldistance=1.1,
startangle=180, explode=explode)
plt.savefig('demo.jpg', dpi =200)
Puoi scoprire di più su come salvare correttamente le visualizzazioni nel nostro corso Introduction to Data Visualization with Matplotlib.
Ora che sai come creare un grafico a torta con Matplotlib, vediamo come funziona in Pandas.
Pandas ha un metodo plot() che può essere usato per disegnare diversi tipi di grafici. Questo metodo funziona sia sugli oggetti DataFrame sia su quelli Series in Pandas. L’argomento kind nel metodo plot() ti aiuta a specificare il tipo di grafico. Nel nostro caso, puoi creare un grafico a torta usando kind ='pie'. Puoi anche aggiungere il parametro labels per includere un nome in ogni fetta e il parametro autopct per aggiungere le percentuali di ciascuna fetta.
python_pie_chart_df['courses'].plot(kind='pie', labels=python_pie_chart_df['labels'], autopct='%1.1f%%')
plt.show()

Il metodo plot() di Pandas è uno strumento per grafici rapidi, ma con opzioni di personalizzazione limitate. Fortunatamente, il metodo usa Matplotlib come backend, il che significa che puoi usare la sintassi di Matplotlib al di fuori del metodo per personalizzare la visualizzazione. Qui sotto trovi un esempio di come combinare Pandas e Matplotlib.
ax= python_pie_chart_df['courses'].plot(kind='pie', labels=python_pie_chart_df['labels'], autopct='%1.1f%%',
colors=datacamp_palette, figsize=(5,5))
ax.set_title('Pie Chart DatataCamp Courses')
ax.set_ylabel(None)
plt.show()

Salvare grafici a torta in Pandas è esattamente come in Matplotlib, dato che Pandas si basa su Matplotlib.
ax= python_pie_chart_df['courses'].plot(kind='pie', labels=python_pie_chart_df['labels'], autopct='%1.1f%%',
colors=datacamp_palette, figsize=(5,5))
ax.set_title('Pie Chart DatataCamp Courses')
ax.set_ylabel(None)
plt.savefig('demo.png')
Per assicurarti che i tuoi grafici a torta vengano visualizzati correttamente, devi fornire a Matplotlib i dati giusti. Ciò significa applicare sempre tecniche di pulizia dei dati nel tuo dataframe, come eliminare i valori nulli con pd.dropna() e impostare i tipi di dato corretti per le colonne di input.
Inoltre, la personalizzazione è fondamentale per mostrare un grafico a torta efficace e incisivo. Tieni però presente che, se usi Pandas, personalizzazioni avanzate come l’explode potrebbero non essere supportate. Come già accennato, se hai bisogno di più controllo sul tuo grafico a torta, potresti dover aggiungere codice Matplotlib agli script.
Quando presenti i tuoi grafici a torta, attieniti alle buone pratiche.
La visualizzazione dei dati può essere considerata un’arte. Intuizione e buon gusto fanno la differenza, ma è importante considerare anche la teoria. Per saperne di più sulle buone pratiche per una visualizzazione efficace, dai un’occhiata al nostro Data Storytelling & Communication Cheat Sheet. Inoltre, se lavori con dashboard, vale la pena leggere questo articolo sulle best practice per progettare dashboard.
A dirla tutta, i grafici a torta sono tra i più criticati. È dimostrato che gli esseri umani non sono molto bravi a interpretare gli angoli. Possiamo illustrarlo con il grafico a torta usato in precedenza. Considera le fette di Excel e ChatGPT. Riesci a dire a colpo d’occhio quale ha l’angolo più grande?

Probabilmente no, ed è per questo che molti esperti di data visualization consigliano di usare altri grafici per rappresentare le proporzioni, soprattutto quando le categorie sono molte, come i grafici a barre e quelli a barre impilate, i treemap o anche i grafici a ciambella. Puoi approfondire queste alternative nel nostro articolo Types of Data Plots and How to Create Them in Python.
Complimenti per essere arrivato alla fine del tutorial. Python è un linguaggio estremamente versatile, che offre diverse librerie e approcci per creare grafici a torta. In questo tutorial abbiamo analizzato come farlo con Matplotlib e Pandas. Entrambi sono ugualmente adatti allo scopo e presentano notevoli somiglianze. L’idea non è scegliere l’uno o l’altro, ma usarli in modo intercambiabile a seconda delle tue esigenze e del flusso di lavoro.
Se vuoi saperne di più sui grafici a torta e, più in generale, sulla visualizzazione dei dati in Python, DataCamp può aiutarti. Scopri i nostri materiali dedicati e preparati a diventare un mago delle visualizzazioni!
Sono una data analyst freelance e collaboro con aziende e organizzazioni di tutto il mondo in progetti di data science. Sono anche un'insegnante di data science con oltre 2 anni di esperienza. Scrivo regolarmente articoli su temi legati alla data science in inglese e spagnolo, alcuni dei quali sono stati pubblicati su siti affermati come DataCamp, Towards Data Science e Analytics Vidhya. Come data scientist con un background in scienze politiche e diritto, il mio obiettivo è lavorare all'intersezione tra politiche pubbliche, diritto e tecnologia, sfruttando la forza delle idee per promuovere soluzioni e narrazioni innovative che ci aiutino ad affrontare le sfide urgenti, in primis la crisi climatica. Mi considero autodidatta, una persona in continuo apprendimento e una convinta sostenitrice dell'approccio multidisciplinare. Non è mai troppo tardi per imparare cose nuove.
Un grafico a torta è un tipo di grafico in cui un cerchio è suddiviso in settori, ognuno dei quali rappresenta una proporzione del totale. È quindi adatto a rappresentare proporzioni.
Il modo più semplice per creare un grafico a torta con Matplotlib è la funzione plt.pie(), che include vari parametri di personalizzazione.
Il modo più semplice per creare un grafico a torta con Pandas è il metodo Series.plot.(kind=’pie’). Consente una visualizzazione rapida sui DataFrame di Pandas ma offre opzioni di personalizzazione limitate rispetto a Matplotlib.
Dovresti sempre seguire le best practice per creare le tue visualizzazioni. Ciò include mantenere i grafici a torta il più semplici possibile, evitare elementi non necessari, scegliere palette di colori intuitive e adattare il grafico al tuo pubblico.
Gli esseri umani non sono molto bravi a interpretare gli angoli, per questo molti esperti di visualizzazione consigliano di usare altri grafici per rappresentare le proporzioni, come i grafici a barre.
Impara con DataCamp
Corso
Corso
Corso
blog
Tim Lu
12 min

blog
Abid Ali Awan
10 min

blog
Abid Ali Awan
15 min