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',
  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' e fontsize = '8' impostano la grandezza del titolo e dei valori della legenda.

  • bbox_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 ๐Ÿ‘‹