• 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:

grafici con Python e Matplotlib

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:

grafici con Python e Matplotlib

Tema scuro

grafici con Python e Matplotlib

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

  • loc = 'center left' e 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 👋