Vai al contenuto principale

Tutorial sul grafico a linee in Python con Seaborn: crea visualizzazioni dei dati

Scopri come usare Seaborn, una popolare libreria di visualizzazione dati in Python, per creare e personalizzare grafici a linee in Python.
Aggiornato 29 set 2026  · 12 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Un grafico a linee è una visualizzazione relazionale che mostra come varia una variabile continua al variare di un’altra. È uno dei grafici più comuni, ampiamente usato in finanza, vendite, marketing, sanità, scienze naturali e altro ancora.

In questo tutorial vedremo come usare Seaborn, una popolare libreria di visualizzazione dati per Python, per creare e personalizzare grafici a linee in Python.

Presentazione del dataset

Per avere qualcosa su cui esercitarci con i grafici a linee di seaborn, scaricheremo innanzitutto un dataset di Kaggle chiamato Daily Exchange Rates per Euro 1999-2024. Poi importeremo tutti i pacchetti necessari e leggeremo e puliremo il dataframe. Senza entrare nei dettagli del processo di pulizia, il codice qui sotto mostra i passaggi da eseguire:

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

daily_exchange_rate_df = pd.read_csv('euro-daily-hist_1999_2022.csv')
daily_exchange_rate_df = daily_exchange_rate_df.iloc[:, [0, 1, 4, -2]]
daily_exchange_rate_df.columns = ['Date', 'Australian dollar', 'Canadian dollar', 'US dollar']
daily_exchange_rate_df = pd.melt(daily_exchange_rate_df, id_vars='Date', value_vars=['Australian dollar', 'Canadian dollar', 'US dollar'], value_name='Euro rate', var_name='Currency')
daily_exchange_rate_df['Date'] = pd.to_datetime(daily_exchange_rate_df['Date'])
daily_exchange_rate_df = daily_exchange_rate_df[daily_exchange_rate_df['Date']>='2022-12-01'].reset_index(drop=True)
daily_exchange_rate_df['Euro rate'] = pd.to_numeric(daily_exchange_rate_df['Euro rate'])

print(f'Currencies: {daily_exchange_rate_df.Currency.unique()}\n')
print(df.head())
print(f'\n{daily_exchange_rate_df.Date.dt.date.min()}/{ daily_exchange_rate_df.Date.dt.date.max()}')

Output:

Currencies: ['Australian dollar' 'Canadian dollar' 'US dollar']

        Date           Currency  Euro rate
0 2023-01-27  Australian dollar     1.5289
1 2023-01-26  Australian dollar     1.5308
2 2023-01-25  Australian dollar     1.5360
3 2023-01-24  Australian dollar     1.5470
4 2023-01-23  Australian dollar     1.5529

2022-12-01/2023-01-27

Il dataframe risultante contiene i tassi giornalieri (giorni lavorativi) dell’euro per dollaro australiano, canadese e statunitense nel periodo dal 01.12.2022 al 27.01.2023 inclusi.

Ora siamo pronti a entrare nel vivo e creare e personalizzare grafici a linee con seaborn in Python.

Nozioni di base sui grafici a linee in Seaborn

Per creare un grafico a linee in Seaborn, possiamo usare una delle due funzioni: lineplot() o relplot(). In generale, condividono molta funzionalità e gli stessi nomi dei parametri. La differenza principale è che relplot() consente di creare grafici a linee con più linee su diverse facet. Invece, lineplot() permette di lavorare con intervalli di confidenza e aggregazione dei dati.

In questo tutorial useremo principalmente la funzione lineplot().

Il corso Introduction to Data Visualization with Seaborn ti aiuterà a imparare e mettere in pratica le funzioni e i metodi principali della libreria seaborn. Puoi anche dare un’occhiata al nostro tutorial su Seaborn per principianti per familiarizzare con questa popolare libreria Python. 

Creare un singolo grafico a linee con seaborn

Possiamo creare un grafico a linee che mostri la relazione tra due variabili continue come segue:

usd = daily_exchange_rate_df[daily_exchange_rate_df['Currency']=='US dollar'].reset_index(drop=True)
sns.lineplot(x='Date', y='Euro rate', data=usd)

Output:

Grafico a linea singola Seaborn con lineplot

Il grafico sopra mostra l’andamento del tasso EUR-USD. Abbiamo definito le variabili da tracciare sugli assi x e y (i parametri x e y) e il dataframe (data) da cui prelevarle.

Per confronto, per creare lo stesso grafico usando relplot(), scriveremmo quanto segue:

sns.relplot(x='Date', y='Euro rate', data=usd, kind='line')

Output:

Grafico a linea singola Seaborn con relplot

In questo caso abbiamo passato un argomento in più specifico della funzione relplot(): kind='line'. Per impostazione predefinita, questa funzione crea uno scatter plot.

Personalizzare un singolo grafico a linee con seaborn

Possiamo personalizzare il grafico in molti modi per renderlo più leggibile e informativo. Ad esempio, possiamo modificare le dimensioni della figura, aggiungere titolo ed etichette degli assi, regolare la dimensione del font, personalizzare la linea, aggiungere e personalizzare i marker, ecc. Vediamo come implementare questi miglioramenti in seaborn.

Regolare le dimensioni della figura

Poiché Seaborn è costruito sopra matplotlib, possiamo usare matplotlib.pyplot per regolare le dimensioni della figura:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=usd)

Output:

Grafico a linea singola Seaborn — dimensioni figura regolate con relplot

Invece, con relplot(), possiamo usare i parametri height e aspect (il rapporto larghezza/altezza) per lo stesso scopo:

sns.relplot(x='Date', y='Euro rate', data=usd, kind='line', height=6, aspect=4)

Output:

Grafico a linee Seaborn

Aggiungere un titolo e le etichette degli assi

Per aggiungere il titolo del grafico e le etichette degli assi, possiamo usare la funzione set() sull’oggetto del grafico a linee di seaborn passando gli argomenti title, xlabel e ylabel:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=usd).set(title='Euro-USD rate', xlabel='Date', ylabel='Rate')

Output:

Grafico a linea singola Seaborn — aggiunti titolo ed etichette degli assi

Regolare la dimensione del font

Un modo comodo per regolare la dimensione del font è usare la funzione set_theme() e provare valori diversi del parametro font_scale:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=usd).set(title='Euro-USD rate', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)

Output:

Grafico a linea singola Seaborn — dimensione del font regolata

Nota che abbiamo anche aggiunto style='white' per evitare di sovrascrivere lo stile iniziale.

Cambiare colore, stile e spessore della linea

Per personalizzare la linea del grafico, possiamo passare alcuni parametri opzionali in comune con matplotlib.pyplot.plot, come color, linestyle o linewidth:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=usd, linestyle='dotted', color='magenta', linewidth=5).set(title='Euro-USD rate', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)

Output:

Grafico a linea singola Seaborn — linea personalizzata

Aggiungere marker e personalizzarne colore, stile e dimensione

È possibile aggiungere marker sulla linea e personalizzarne l’aspetto. Anche in questo caso possiamo usare alcuni parametri di matplotlib, come marker, markerfacecolor o markersize:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=usd, marker='*', markerfacecolor='limegreen', markersize=20).set(title='Euro-USD rate', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)

Output:

Grafico a linea singola Seaborn — marker aggiunti e personalizzati

La documentazione fornisce l’elenco completo dei parametri da usare per migliorare l’estetica di un grafico a linee in seaborn. In particolare, possiamo vedere tutte le scelte possibili di marker.

Nella nostra cheat sheet su Seaborn troverai altri modi per personalizzare un grafico a linee in Seaborn.

Grafici a linee Seaborn con più linee

Spesso dobbiamo esplorare come più variabili continue cambiano in funzione di un’altra variabile continua. A questo scopo possiamo costruire un grafico a linee di seaborn con più linee. Le funzioni lineplot() e relplot() si applicano anche a questi casi.

Creare un grafico a linee seaborn con più linee

Tecnicamente, è possibile creare un grafico a linee seaborn con più linee semplicemente costruendo un oggetto axes separato per ciascuna variabile dipendente, cioè ciascuna linea:

aud = daily_exchange_rate_df[daily_exchange_rate_df['Currency']=='Australian dollar'].reset_index(drop=True)
cad = daily_exchange_rate_df[daily_exchange_rate_df['Currency']=='Canadian dollar'].reset_index(drop=True)

sns.lineplot(x='Date', y='Euro rate', data=usd)
sns.lineplot(x='Date', y='Euro rate', data=aud)
sns.lineplot(x='Date', y='Euro rate', data=cad)

Output:

Grafico a più linee Seaborn — oggetti axes separati per le variabili dipendenti

Qui sopra abbiamo estratto altri due sottoinsiemi dal dataframe iniziale daily_exchange_rate_df – per dollaro australiano e canadese – e tracciato ciascun tasso dell’euro nel tempo. Tuttavia, esistono soluzioni più efficienti: usare i parametri hue, style o size, disponibili sia in lineplot() che in relplot().

Usare il parametro hue

Questo parametro funziona così: gli assegniamo il nome di una colonna del dataframe contenente valori categoriali e seaborn genera un grafico a linee per ciascuna categoria, attribuendo un colore diverso a ogni linea:

sns.lineplot(x='Date', y='Euro rate', data=daily_exchange_rate_df, hue='Currency')

Output:

Grafico a più linee Seaborn con hue

Con una sola riga di codice abbiamo creato un grafico a linee seaborn per tre categorie. Nota che abbiamo passato il dataframe iniziale daily_exchange_rate_df invece dei suoi sottoinsiemi per le diverse valute.

Usare il parametro style

Il parametro style funziona allo stesso modo di hue, solo che distingue le categorie usando stili di linea diversi (continua, tratteggiata, puntinata, ecc.), senza influire sul colore:

sns.lineplot(x='Date', y='Euro rate', data=daily_exchange_rate_df, style='Currency')

Output:

Grafico a più linee Seaborn con style

Usare il parametro size

Come hue e style, il parametro size crea una linea separata per ogni categoria. Non influisce su colore e stile delle linee ma ne rende ciascuna di larghezza diversa:

sns.lineplot(x='Date', y='Euro rate', data=daily_exchange_rate_df, size='Currency')

Output:

Grafico a più linee Seaborn con size

Personalizzare un grafico a linee seaborn con più linee

Ora sperimentiamo con l’estetica del nostro grafico. Alcune tecniche sono identiche a quelle applicate a un singolo grafico a linee Seaborn. Altre sono specifiche dei grafici a più linee.

Regolazioni generali

Possiamo regolare le dimensioni della figura, aggiungere un titolo e le etichette degli assi e cambiare la dimensione del font del grafico precedente allo stesso modo di quanto fatto per un singolo grafico a linee:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=daily_exchange_rate_df, hue='Currency').set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)

Output:

Grafico a più linee Seaborn — regolazioni generali

Cambiare colore, stile e spessore di ogni linea

In precedenza abbiamo visto che, quando si usano i parametri hue, style o size, seaborn fornisce un set predefinito di colori/stili/spessori per un grafico a più linee. All’occorrenza possiamo ignorare questi default e scegliere noi colori/stili/spessori.

Quando usiamo il parametro hue, possiamo anche passare l’argomento palette come lista o tupla di nomi di colori di matplotlib. Ti consiglio di leggere il nostro tutorial, Seaborn Color Palette: Quick Guide to Picking Colors, per capire di più sulla teoria del colore e trovare tante buone idee per rendere le tue visualizzazioni più gradevoli. 

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=daily_exchange_rate_df, hue='Currency', palette=['magenta', 'deepskyblue', 'yellowgreen']).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)

Output:

Grafico a più linee Seaborn con hue e palette personalizzata

È anche possibile applicare direttamente una palette di matplotlib esistente:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=daily_exchange_rate_df, hue='Currency', palette='spring').set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)

Output:

Grafico a più linee Seaborn con hue e palette standard

Allo stesso tempo, usando hue, possiamo comunque regolare stile e spessore di tutte le linee passando gli argomenti linestyle e linewidth:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=daily_exchange_rate_df, hue='Currency', palette=['magenta', 'deepskyblue', 'yellowgreen'], linestyle='dashed', linewidth=5).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)

Output:

Grafico a più linee Seaborn con hue — stile, colore e spessore regolati

Invece, quando creiamo un grafico a linee seaborn con più linee usando il parametro style, possiamo assegnare una lista (o tupla) di liste (o tuple) a un parametro chiamato dashes:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=daily_exchange_rate_df, style='Currency', dashes=[[4, 4], [6, 1], [3, 9]]).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)

Output:

Grafico a più linee Seaborn con style e pattern personalizzato

Nella lista di liste assegnata a dashes, il primo elemento di ogni sottolista rappresenta la lunghezza di un segmento della linea corrispondente, mentre il secondo elemento – la lunghezza di uno spazio.

Nota: per rappresentare una linea continua, dobbiamo impostare la lunghezza dello spazio a zero, ad es.: [1, 0].

Per regolare colore e spessore di tutte le linee di questo grafico, forniamo gli argomenti color e linewidth, proprio come quando abbiamo personalizzato un singolo grafico a linee seaborn:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=daily_exchange_rate_df, style='Currency', dashes=[[4, 4], [6, 1], [3, 9]], color='darkviolet', linewidth=4).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)

Output:

Grafico a più linee Seaborn con style — stile, colore e spessore regolati

Infine, quando usiamo il parametro size per creare un grafico a più linee in seaborn, possiamo regolare lo spessore di ciascuna linea tramite il parametro sizes. Accetta una lista (o tupla) di interi:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=daily_exchange_rate_df, size='Currency', sizes=[2, 10, 5]).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)

Output:

Grafico a più linee Seaborn con size e spessori personalizzati

Per personalizzare colore e stile di tutte le linee di questo grafico, dobbiamo fornire gli argomenti linestyle e color:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=daily_exchange_rate_df, size='Currency', sizes=[2, 10, 5], linestyle='dotted', color='teal').set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)

Output:

Grafico a più linee Seaborn con size — stile, colore e spessore regolati

Aggiungere marker e personalizzarne colore, stile e dimensione

Potremmo voler aggiungere marker al nostro grafico a più linee di seaborn.

Per aggiungere marker dello stesso colore, stile e dimensione su tutte le linee, dobbiamo usare i parametri di matplotlib, come marker, markerfacecolor, markersize, ecc., proprio come per un singolo grafico a linee:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=daily_exchange_rate_df, hue='Currency', marker='o', markerfacecolor='orangered', markersize=10).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)

Output:

Grafico a più linee Seaborn con marker dello stesso colore, stile e dimensione

Le cose cambiano, però, quando vogliamo marker diversi per ogni linea. In questo caso dobbiamo usare il parametro markers che, però, secondo le funzionalità di seaborn, funziona solo quando è specificato il parametro style:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=daily_exchange_rate_df, style='Currency', markers=['o', 'X', '*'], markerfacecolor='brown', markersize=10).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)

Output:

Grafico a più linee Seaborn con marker di stili diversi

Nel grafico sopra, possiamo rendere tutte le linee continue fornendo l’argomento dashes e impostando il pattern [1, 0] per ciascuna linea:

fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=daily_exchange_rate_df, style='Currency', markers=['o', 'X', '*'], dashes=[[1, 0], [1, 0], [1, 0]], markerfacecolor='brown', markersize=10).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)

Output:

Grafico a più linee Seaborn con linee continue e marker di stili diversi

Conclusione

Ricapitolando, in questo tutorial abbiamo visto vari modi per creare e personalizzare un grafico a linee di Seaborn con una o più linee.

Come passi successivi, con seaborn possiamo fare molto di più per rifinire un grafico a linee. Ad esempio, possiamo:

  • Raggruppare le linee in base a più di una variabile categoriale
  • Personalizzare la legenda
  • Creare grafici a linee con più linee su facet diverse
  • Visualizzare e personalizzare l’intervallo di confidenza
  • Personalizzare i tick e le etichette dell’asse temporale per un grafico a linee di serie storiche

Per approfondire cosa e come si può fare con seaborn, valuta di seguire il nostro corso Intermediate Data Visualization with Seaborn.

FAQ sui grafici a linee in Seaborn

Che cos’è un grafico a linee in Seaborn?

Un grafico a linee in Seaborn è un tipo di grafico che mostra la relazione tra due variabili collegando i punti dati con una linea retta.

Che tipo di dati è più adatto a un grafico a linee in Seaborn?

I grafici a linee sono più adatti a dati in cui c’è una chiara relazione tra due variabili e in cui le variabili sono continue o ordinali.

Posso tracciare più linee sullo stesso grafico in Seaborn?

Sì, puoi tracciare più linee sullo stesso grafico in Seaborn usando il parametro hue per specificare una variabile categoriale con cui raggruppare i dati.

Qual è la differenza tra un grafico a linee e uno scatter plot in Seaborn?

Un grafico a linee in Seaborn mostra la relazione tra due variabili con una linea retta, mentre uno scatter plot mostra la relazione con singoli punti dati.

Posso aggiungere una linea di regressione al mio grafico a linee in Seaborn?

Sì, puoi aggiungere una linea di regressione al tuo grafico a linee in Seaborn usando la funzione regplot(), che adatta e traccia un modello di regressione lineare tra due variabili.

Come salvo il mio grafico a linee di Seaborn su file?

Puoi salvare il tuo grafico a linee di Seaborn su file usando la funzione savefig() della libreria matplotlib, che salva la figura corrente in un percorso e formato specificati.

Argomenti
Python
Data Visualization
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