Vai al contenuto principale

Grafico a linee per serie temporali in Matplotlib

Questo tutorial esplora come creare e personalizzare grafici a linee per serie temporali in matplotlib.
Aggiornato 29 set 2026  · 8 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Una serie temporale è un insieme di osservazioni di dati indicizzate nel tempo in ordine cronologico. Queste osservazioni sono spesso (ma non necessariamente) registrate a intervalli di tempo regolari. Le serie temporali sono usate di frequente in banking, trading, marketing, scienza e in altri settori. La rappresentazione visiva più tipica dei dati di una serie temporale è un grafico a linee in cui il tempo è riportato sull’asse x e il valore misurato – sull’asse y.

In questo tutorial, esploreremo come creare e personalizzare grafici a linee per serie temporali in matplotlib, una delle principali librerie Python per la creazione di grafici.

Primi passi con i grafici di serie temporali in matplotlib

Importare le librerie e caricare i dati

Per prima cosa, importeremo le librerie Python necessarie e caricheremo i dati – un dataset di Kaggle Daily Exchange Rates per Euro 1999-2023. Eseguiremo anche una pulizia di base dei dati:

import matplotlib
import matplotlib.pyplot as plt
import pandas as pd
from datetime import datetime

df = pd.read_csv('euro-daily-hist_1999_2022.csv')
df = df.iloc[:, [0, 4, 28, -2]]
df.columns = ['Date', 'CAD', 'NZD', 'USD']

for col in ['CAD', 'NZD', 'USD']:
    df = df[df[col] != '-']
    df[col] = pd.to_numeric(df[col])
   
df = df[df['Date'] >= '2022-12-01'].reset_index(drop=True)
print(df.head(3))
print(f'\nThe date range: {df.Date.min()}/{ df.Date.max()}')

Output:

Date     CAD     NZD     USD
0  2023-01-27  1.4479  1.6759  1.0865
1  2023-01-26  1.4568  1.6799  1.0895
2  2023-01-25  1.4544  1.6792  1.0878

The date range: 2022-12-01/2023-01-27

Convertire stringhe di data/ora in oggetti datetime

Per lavorare in modo efficiente con le serie temporali, dobbiamo convertire le stringhe di data o ora in oggetti datetime usando la funzione pandas.to_datetime:

df['Date'] = pd.to_datetime(df['Date'])
print(df['Date'].dtypes)

Output:

datetime64[ns]

Se ti serve un ripasso su come lavorare con le serie temporali in Python, potrebbe esserti utile il corso Manipulating Time Series Data in Python.

Impostare una colonna datetime come indice del dataframe

Ora impostiamo la colonna Date come indice del dataframe usando il metodo set_index:

df = df.set_index('Date')
print(df.head(3))

Output:

              CAD     NZD     USD
Date                             
2023-01-27  1.4479  1.6759  1.0865
2023-01-26  1.4568  1.6799  1.0895
2023-01-25  1.4544  1.6792  1.0878

Creare un grafico a linee di base per serie temporali in matplotlib

Per creare un semplice grafico a linee per serie temporali, usiamo il metodo standard matplotlib.pyplot.plot(x, y):

plt.plot(df.index, df['CAD'])

Output:

image1.png

Creare un grafico a linee multiplo per serie temporali in matplotlib

Per creare un grafico a linee multiplo per serie temporali, eseguiamo semplicemente il metodo matplotlib.pyplot.plot(x, y) il numero di volte necessario: 

plt.plot(df.index, df['CAD'])
plt.plot(df.index, df['NZD'])
plt.plot(df.index, df['USD'])

image4.png

Usare il ciclo for ottimizza il codice sopra:

for col in ['CAD', 'NZD', 'USD']:
    plt.plot(df.index, df[col])

Output: 

image4.png

Personalizzare i grafici di serie temporali in matplotlib

Per rendere il nostro grafico a linee per serie temporali più leggibile ed efficace, dobbiamo personalizzarlo. Possiamo applicare alcune regolazioni comuni di matplotlib, come personalizzare la dimensione della figura, aggiungere e personalizzare un titolo e le etichette degli assi, modificare le proprietà della linea, aggiungere e personalizzare i marker, ecc. Altre regolazioni sono specifiche dei grafici per serie temporali, come personalizzare i tick dell’asse del tempo e le loro etichette o evidenziare determinati periodi.

Personalizzare figura e assi

Usando i metodi standard di matplotlib, possiamo personalizzare la figura e gli assi di un grafico a linee per serie temporali in molti modi, come descritto nei commenti del codice qui sotto:

# Adjusting the figure size
fig = plt.subplots(figsize=(16, 5))

# Creating a plot
plt.plot(df.index, df['CAD'])

# Adding a plot title and customizing its font size
plt.title('EUR-CAD rate', fontsize=20)

# Adding axis labels and customizing their font size
plt.xlabel('Date', fontsize=15)
plt.ylabel('Rate', fontsize=15)

# Rotaing axis ticks and customizing their font size
plt.xticks(rotation=30, fontsize=15)

# Changing the plot resolution - zooming in the period from 15.12.2022 till 15.01.2023
plt.xlim(pd.Timestamp('2022-12-15'), pd.Timestamp('2023-01-15'))

Output: 

image8.png

Personalizzare le proprietà della linea

Come per i grafici a linee comuni, è possibile cambiare le proprietà della linea in un grafico di serie temporali, come colore, stile o spessore:

plt.plot(df.index, df['CAD'], color='green', linestyle='dashed', linewidth=3)

Output:

image5.png

Aggiungere e personalizzare i marker

Come in qualsiasi grafico a linee, possiamo inserire marker su un grafico di serie temporali e personalizzarne simbolo, colore, colore del bordo e dimensione:

plt.plot(df.index, df['CAD'], marker='o', markerfacecolor='yellow', markeredgecolor='red', markersize=8)

image9.png

Personalizzare i tick dell’asse temporale

Creiamo innanzitutto un grafico di base per serie temporali in matplotlib con qualche personalizzazione essenziale:

fig = plt.subplots(figsize=(16, 5))
plt.plot(df.index, df['CAD'])
plt.title('EUR-CAD rate', fontsize=20)
plt.xlabel('Date', fontsize=15)
plt.ylabel('Rate', fontsize=15)
plt.xlim(df.index.min(), df.index.max())

Output: 

image7.png

Vediamo che per impostazione predefinita matplotlib mostra alcuni tick casuali, insieme alle loro etichette. Tuttavia, potremmo voler controllare quali tick vengono visualizzati sull’asse del tempo. In questo caso, dobbiamo fornire un elenco delle date (o ore) necessarie come stringhe o timestamp pandas al metodo matplotlib.pyplot.xticks:

fig = plt.subplots(figsize=(16, 5))
plt.plot(df.index, df['CAD'])
plt.title('EUR-CAD rate', fontsize=20)
plt.xlabel('Date', fontsize=15)
plt.ylabel('Rate', fontsize=15)
plt.xlim(df.index.min(), df.index.max())

# Defining and displaying time axis ticks
ticks = ['2022-12-05', '2023-01-02', '2023-01-20']
plt.xticks(ticks)

Output: 

image6.png

Sopra, matplotlib ha mostrato i tick selezionati e li ha etichettati automaticamente.

Se vogliamo visualizzare tutti i tick, dobbiamo fornire un elenco degli indici della serie temporale al metodo matplotlib.pyplot.xticks:

fig = plt.subplots(figsize=(16, 5))
plt.plot(df.index, df['CAD'])
plt.title('EUR-CAD rate', fontsize=20)
plt.xlabel('Date', fontsize=15)
plt.ylabel('Rate', fontsize=15)
plt.xlim(df.index.min(), df.index.max())

# Defining and displaying all time axis ticks
ticks = list(df.index)
plt.xticks(ticks, rotation=45)

Output: 

image2.png

Personalizzare le etichette dei tick dell’asse temporale

Le etichette dei tick dell’asse temporale nel grafico sopra possono risultare eccessive. Potremmo volerle formattare per renderle più leggibili. A questo scopo, possiamo usare la classe matplotlib.dates.DateFormatter passando una stringa di formato strftime che rifletta come vorremmo visualizzare le date/ore. Poi, forniamo questo formatter al metodo matplotlib.axis.XAxis.set_major_formatter:

fig, ax = plt.subplots(figsize=(16, 5))
plt.plot(df.index, df['CAD'])
plt.title('EUR-CAD rate', fontsize=20)
plt.xlabel('Date', fontsize=15)
plt.ylabel('Rate', fontsize=15)
plt.xlim(df.index.min(), df.index.max())
ticks = list(df.index)
plt.xticks(ticks, rotation=45)

# Formatting time axis tick labels
ax.xaxis.set_major_formatter(matplotlib.dates.DateFormatter('%b %d'))

Output: 

image10.png

Questa pagina della documentazione fornisce un elenco completo di tutti i possibili codici di formato strftime.

Evidenziare determinati periodi

A volte, potremmo voler ombreggiare determinati periodi su un grafico a linee per serie temporali. A questo scopo, possiamo usare il metodo matplotlib.pyplot.axvspan. Accetta due argomenti obbligatori: i punti di inizio e fine del periodo di interesse in formato datetime. Il metodo può anche accettare alcuni parametri opzionali per personalizzare l’aspetto dell’area evidenziata, come colore, colore del bordo, trasparenza, spessore della linea o pattern di riempimento.

Applichiamo questa tecnica al grafico della sezione precedente:

fig, ax = plt.subplots(figsize=(16, 5))
plt.plot(df.index, df['CAD'])
plt.title('EUR-CAD rate', fontsize=20)
plt.xlabel('Date', fontsize=15)
plt.ylabel('Rate', fontsize=15)
plt.xlim(df.index.min(), df.index.max())
ticks = list(df.index)
plt.xticks(ticks, rotation=45)
ax.xaxis.set_major_formatter(matplotlib.dates.DateFormatter('%b %d'))

# Highlighting the time period from 15.12.2022 to 1.01.2023 and customizing the shaded area
plt.axvspan(datetime(2022, 12, 15), datetime(2023, 1, 1), facecolor='yellow', alpha=0.5, hatch='/', edgecolor='red', linewidth=5)

Output: 

image11.png

Salvare un grafico a linee per serie temporali di matplotlib su file

Possiamo scegliere di salvare un grafico a linee per serie temporali in un file immagine invece di limitarci a visualizzarlo. Per farlo, usiamo il metodo matplotlib.pyplot.savefig passando il nome del file. Per esempio, torniamo al nostro primo grafico di base:

plt.plot(df.index, df['CAD'])

# Saving the resulting plot to a file
plt.savefig('time series line plot.png')

image1.png

Sopra, abbiamo salvato il grafico in un file chiamato time series line plot.png, posizionato nella stessa cartella del nostro programma corrente.

Conclusione

In sintesi, in questo tutorial abbiamo visto come creare e personalizzare grafici a linee per serie temporali in matplotlib, utilizzando sia metodi comuni di matplotlib sia approcci più avanzati, specifici delle visualizzazioni di serie temporali.

Dopo aver imparato queste tecniche fondamentali, potresti voler approfondire il lavoro con i dati di serie temporali e la loro visualizzazione in Python. In tal caso, esplora le seguenti risorse complete, per principianti e end-to-end:

Argomenti
Python
Data Visualization

Corsi Python

Corso

Introduzione alla visualizzazione dei dati con Matplotlib

4 ore
235.6K
Impara a creare, personalizzare e condividere visualizzazioni di dati usando Matplotlib.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro