In questa micro-lezione, vedremo come creare un grafico ad area utilizzando Python, pandas e Matplotlib.

I grafici ad area sono perfetti per mostrare l'andamento di piรน categorie nel tempo, evidenziando sia i valori individuali che il totale cumulativo.

Le librerie e il dataframe

Per iniziare, importiamo le librerie necessarie:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

Adesso creiamo un semplice dataframe (se ne hai giร  uno su cui stai lavorando, salta questo passaggio):

data = {
    'Anno': [2018, 2019, 2020, 2021, 2022],
    'Prodotto A': [30, 35, 10, 45, 50],
    'Prodotto B': [20, 25, 40, 35, 40],
    'Prodotto C': [10, 15, 20, 25, 30]
}

df = pd.DataFrame(data)

Ecco come appare il nostro dataframe:

Anno

Prodotto A

Prodotto B

Prodotto C

2018

30

20

10

2019

35

25

15

2020

40

30

20

2021

45

35

25

2022

50

40

30

Costruiamo il grafico ad area

Ora che abbiamo i nostri dati, possiamo procedere con la creazione del grafico ad area.

Per prima cosa, impostiamo la colonna โ€œAnnoโ€ come indice del nostro dataframe:

df.set_index('Anno', inplace=True)

Ora creiamo un semplice grafico ad area, specificando soltanto le sue dimensioni (con il parametro figsize) e la trasparenza dei colori (con il parametro alpha):

ax = df.plot.area(figsize=(10, 6), alpha=0.5)
plt.show()

Ed ecco qui il nostro grafico:

Miglioriamo il grafico

Adesso cercheremo di migliorare e personalizzare il nostro grafico.

Sistemiamo lโ€™asse delle x

Il primo grande problema da risolvere riguarda lโ€™asse delle ascisse (lโ€™asse delle x). Matplotlib lo raffigura ad intervalli di 0,5. Nel nostro caso, vogliamo invece degli intervalli pari a 1, in modo da avere un segno per ogni anno.

Per farlo, possiamo creare due variabili corrispondenti al valore minimo e massimo della nostra colonna โ€œAnnoโ€.

Se lo fai prima di aver reso la colonna โ€œAnnoโ€ lโ€™indice del dataframe, puoi fare cosรฌ:

minimo = df['Anno'].min()
massimo = df['Anno'].max()

Se invece la colonna โ€œAnnoโ€ รจ giร  lโ€™indice del dataframe, dovrai fare cosรฌ:

minimo = df.index.min()
massimo = df.index.max()

Dopo aver costruito il nostro grafico, specificheremo il parametro xticks, in modo da definire lโ€™intervallo dei valori raffigurati sullโ€™asse delle x.

In questo caso, vogliamo che lโ€™asse delle ascisse vada dal valore minimo della colonna โ€œAnnoโ€ fino al suo massimo piรน uno (per lasciarci un poโ€™ di margine). Inoltre, vogliamo raffigurare i valori dellโ€™asse delle x con un anno di intervallo tra ognuno di essi.

# Costruiamo il grafico

ax = df.plot.area(figsize=(10, 6), alpha=0.5)


# Personalizziamo l'asse delle x

plt.xticks(np.arange(minimo, massimo+1, 1))


# Raffiguriamo il grafico

plt.show()

Ed ecco qui il nostro grafico:

Finalmente lโ€™asse delle x si comporta come dovrebbe!

โ

Nota bene

La creazione delle variabili massimo e minimo non รจ obbligatoria per fare quanto mostrato qui sopra.

Infatti, sarebbe stato possibile recuperare il valore minimo e massimo della colonna โ€œAnnoโ€ direttamente allโ€™interno del comando np.arange().

Tuttavia, la creazione delle variabili aumenta la leggibilitร  e lโ€™eleganza del codice.

Aggiungiamo degli elementi di testo

In questa sezione vedremo come:

  • Aggiungere un titolo generale che spieghi cosa raffigura il grafico

  • Personalizzare il titolo degli assi specificandone il testo e la grandezza del carattere

  • Impostare la grandezza per i caratteri della legenda (sia per il titolo che per i valori) e posizionarla fuori dallโ€™area del grafico

Procediamo:

# Titolo generale

plt.title('Vendite dei prodotti nel tempo', fontsize=16)


# Titolo dell'asse delle x

plt.xlabel('Anno', fontsize=12)


# Titolo dell'asse delle y

plt.ylabel('Unitร  vendute', fontsize=12)


# Legenda

plt.legend(title='Prodotti', title_fontsize='12', fontsize='10', bbox_to_anchor = (1, 1.01))

Ed ecco qui il nostro grafico:

Modifiche avanzate

Se vuoi personalizzare ulteriormente il tuo grafico, ti consiglio di leggere la micro-lezione sui 6 comandi per personalizzare i grafici con Matplotlib.

In questo approfondimento imparerai a cambiare il tema del tuo grafico, scegliere una palette di colori personalizzata, aggiungere una griglia e molto altro.

Il codice per il grafico ad area

Ecco qui il codice completo che abbiamo usato per ottenere il grafico ad area costruito in questa micro-lezione:

# Librerie

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt


# Dataframe

data = {
    'Anno': [2018, 2019, 2020, 2021, 2022],
    'Prodotto A': [30, 35, 10, 45, 50],
    'Prodotto B': [20, 25, 40, 35, 40],
    'Prodotto C': [10, 15, 20, 25, 30]
}
df = pd.DataFrame(data)


# Variabili

minimo = df['Anno'].min()
massimo = df['Anno'].max()


# Indice

df.set_index('Anno', inplace=True)


# Grafico base

ax = df.plot.area(figsize=(10, 6), alpha=0.5)


# Personalizzazioni

## Range dell'asse x

plt.xticks(np.arange(minimo, massimo+1, 1))


## Titolo generale

plt.title('Vendite dei prodotti nel tempo', fontsize=16)


## Titolo dell'asse delle x

plt.xlabel('Anno', fontsize=12)


## Titolo dell'asse delle y

plt.ylabel('Unitร  vendute', fontsize=12)


## Legenda

plt.legend(title='Prodotti', title_fontsize='12', fontsize='10', bbox_to_anchor = (1, 1.01))


# Mostrare il grafico

plt.show()

Alla prossima micro-lezione ๐Ÿ‘‹