- analiticas
- Posts
- 6 comandi per personalizzare i grafici con Matplotlib
6 comandi per personalizzare i grafici con Matplotlib
Guida rapida alla creazione di grafici funzionali con Python e Matplotlib
In questa micro-lezione daremo uno sguardo a 6 comandi per curare gli aspetti chiave dei nostri grafici costruiti con Matplotib.
Il programma della micro-lezione
Le librerie e il dataframe
Prima di cominciare, importiamo le librerie di cui avremo bisogno:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
Se non hai un set di dati su cui stai già lavorando, possiamo creare un dataframe a fini dimostrativi:
data = {
'Anno': [2018, 2019, 2020, 2021, 2022],
'Prodotto A': [30, 35, 40, 45, 50],
'Prodotto B': [20, 25, 30, 35, 40],
'Prodotto C': [10, 15, 20, 25, 30]
}
df = pd.DataFrame(data)
Ecco l’aspetto del nostro dataframe:
Iniziamo da un grafico a colonne
Per prima cosa, impostiamo la colonna “Anno” come indice del dataframe:
df.set_index('Anno', inplace=True)
Costruiamo poi il grafico a colonne:
df.plot.bar()
Ecco qui il nostro grafico:
Cambiare il tema
La libreria Matplotlib dispone di temi già pronti da usare. Per farlo, occorre scegliere il tema desiderato prima di creare il grafico.
Ecco qui due esempi:
# Tema scuro
plt.style.use('dark_background')
# Team classico
plt.style.use('classic')
Ed ecco qui i risultati:
Tema scuro | Tema classico |
Per visualizzare una lista di tutti i temi disponibili su Matplotlib, puoi eseguire il comando:
plt.style.available
Aggiungere e personalizzare il titolo
Aggiungiamo un titolo al nostro grafico e impostiamone la grandezza:
plt.title(
'Vendite dei prodotti nel tempo',
fontsize=12
)
Aggiungere i nomi degli assi
Adesso immaginiamo di voler dare un nome all’asse X e all’asse Y. Facendolo, possiamo anche impostarne la dimensione. Ecco come fare:
plt.xlabel(
'Anno',
fontsize=10
)
plt.ylabel(
'Unità vendute',
fontsize=10
)
Cambiare i colori
I colori di default di Matplotlib potrebbero non essere il massimo. Ecco come fare per personalizzarli:
# Impostiamo i colori
colors = [
'#3772ff',
'#5ce9a5',
'#df2935'
]
# Applichiamoli al grafico
df.plot.bar(color=colors)
Ed ecco qui il risultato, includendo anche le modifiche apportate nei passaggi precedenti:
Ruotare le etichette dell’asse X
Avrai notato che gli anni sull’asse delle X non sono scritti in orizzontale. Per farlo, o per modificarne la rotazione in un grafico costruito su Matplotlib, possiamo usare:
plt.xticks(rotation=0)
Personalizzare la legenda
Per il momento il nostro grafico ha una legenda che Matplotlib visualizza in maniera abbastanza strana: è situata all’interno dell’aera del grafico.
Per cambiare questo aspetto e personalizzare altri parametri della legenda, possiamo scrivere il codice seguente:
plt.legend(
title = 'Prodotti',
title_fontsize = '10',
fontsize = '8',
loc = 'center left',
bbox_to_anchor = (1, 0.91)
)
Vediamo insieme quello che fa ogni parametro di plt.legend()
:
title = 'Prodotti'
imposta il titolo del box della legenda.title_fontsize = '10'
efontsize = '8'
impostano la grandezza del titolo e dei valori della legenda.loc = 'center left'
ebbox_to_anchor = (1, 0.91)
impostano la posizione della legenda e la ancorano ad un punto del grafico. Nel mio caso i valori(1, 0.91)
la allineano al suo margine superiore.
Ecco qui come apparirà il nostro grafico:
Aggiungere una griglia
Ipotizziamo di voler aggiungere una griglia al nostro grafico. Data la natura dei nostri dati, ha senso impostarne una che sia applicata soltanto all’asse Y. Per farlo, possiamo usare questo codice:
plt.grid(
True,
linestyle='--',
alpha=0.7,
axis='y'
)
Vediamo nel dettaglio il funzionamento di ogni parametro di plt.grid()
:
True
fa sì che la griglia sia visibile.linestyle='--'
ne imposta lo stile. In questo caso sarà una linea tratteggiata.alpha=0.7
specifica la trasparenza. Il range va da 0.0 (completamente trasparente) a 1 (solida).axis='y'
limita la griglia ad un solo asse, in questo caso quello Y. Omettendo questo parametro si avrà una griglia su entrambi gli assi.
Il risultato finale
Ecco qui il nostro grafico finale:
Ed ecco qui il codice completo:
# Librerie
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#Variabili
colors = ['#3772ff', '#5ce9a5', '#df2935']
# dataframe
data = {
'Anno': [2018, 2019, 2020, 2021, 2022],
'Prodotto A':[30, 35, 40, 45, 50],
'Prodotto B':[20, 25, 30, 35, 40],
'Prodotto C':[10, 15, 20, 25, 30]
}
df = pd.DataFrame(data)
df.set_index('Anno', inplace=True)
# Grafico
df.plot.bar(color=colors)
plt.xlabel(
'Anno',
fontsize=10
)
plt.ylabel(
'Unità vendute',
fontsize=10
)
plt.title(
'Vendite dei prodotti nel tempo',
fontsize=12
)
plt.xticks(rotation=0)
plt.legend(
title = 'Prodotti',
title_fontsize = '10',
fontsize = '8',
loc = 'center left',
bbox_to_anchor = (1, 0.91)
)
plt.grid(
True,
linestyle='--',
alpha=0.7,
axis='y'
)
plt.show()
Alla prossima micro-lezione 👋