Corso
Le heatmap sono una tecnica di visualizzazione dei dati molto diffusa che usa il colore per rappresentare diversi livelli di magnitudine, permettendoti di identificare rapidamente pattern e anomalie nel tuo dataset.
La libreria Seaborn ti permette di creare facilmente visualizzazioni dei dati altamente personalizzate, come line plot, istogrammi e heatmap. Puoi anche consultare il nostro tutorial sui diversi tipi di grafici e come crearli in Python.
Tieni a portata di mano il nostro cheat sheet di Seaborn per un riferimento rapido quando crei e personalizzi le visualizzazioni con la libreria Seaborn.
In questo tutorial vedremo cosa sono le heatmap di Seaborn, quando usarle e come crearle e personalizzarle in base alle tue esigenze.
Capire le heatmap
Cosa sono le heatmap?
Le heatmap organizzano i dati in una griglia, con colori o sfumature diverse che indicano differenti livelli della magnitudine dei dati.
La natura visiva delle heatmap consente di riconoscere immediatamente pattern come cluster, trend e anomalie. Questo rende le heatmap uno strumento efficace per l’analisi esplorativa dei dati.
Ecco un esempio di heatmap Seaborn:

Quando dovresti usare le heatmap?
La scelta di usare una heatmap dipende dalle tue necessità e dalla natura del dataset. In generale, le heatmap sono più adatte a dataset in cui i valori possono essere rappresentati come colori, tipicamente dati numerici continui o discreti. Tuttavia, puoi usarle anche per dati categorici che siano stati quantificati o riassunti (ad es. conteggi, medie).
Se il dataset contiene outlier estremi o è molto sparso, una heatmap potrebbe non essere altrettanto efficace senza pre-elaborazione o normalizzazione. Testo, immagini e altre forme di dati non strutturati non sono direttamente adatti alle heatmap, a meno che non vengano prima trasformati in un formato numerico strutturato.
Le heatmap sono eccellenti per visualizzare la matrice di correlazione tra più variabili, rendendo facile individuare a colpo d’occhio variabili altamente correlate o inversamente correlate.
Le heatmap sono utili anche per confrontare visivamente i dati su due dimensioni, come periodi temporali o categorie diverse. Per l’analisi geografica, le heatmap possono rappresentare la densità o l’intensità di eventi su un layout spaziale, come la densità di popolazione o i punti caldi della criminalità in una città.
Iniziare con le heatmap di Seaborn
Impostare l’ambiente
Per questo tutorial useremo un dataset con informazioni sui prestiti disponibile su DataLab, il notebook dati con AI di DataCamp. Il codice di questo tutorial è disponibile anche nel relativo workbook DataLab.
In DataLab, tutte le principali librerie sono già comodamente installate e pronte da importare. Per saperne di più, abbiamo un articolo sulle migliori librerie Python per la data science.
Useremo queste librerie per il tutorial:
# Import libraries
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
Se non conosci Python e hai bisogno di recuperare velocemente per seguire questo tutorial, dai un’occhiata al nostro corso Introduzione a Python.
In alternativa, se vuoi saperne di più sulle librerie che useremo in questo tutorial, puoi consultare questi corsi:
- Data Manipulation with Pandas
- Introduction to NumPy
- Introduction to Data Visualization with Matplotlib
Preparare i dati
Assicurati che i tuoi dati siano in formato matrice, con righe e colonne che rappresentano dimensioni diverse (ad es. periodi temporali, variabili, categorie). Ogni cella della matrice dovrebbe contenere il valore che vuoi visualizzare.
Pulizia dei dati
Prima di usare una heatmap, dovresti eseguire due principali attività di pulizia: gestire i valori mancanti e rimuovere gli outlier.
Per i valori mancanti, potresti riempirli usando una misura statistica (media, mediana), interpolarli o eliminarli se non sono significativi. Per quanto riguarda gli outlier, a seconda dell’analisi, potresti rimuoverli o decidere di aggiustarne i valori.
Nel nostro dataset sui prestiti non c’erano valori mancanti, ma abbiamo identificato diversi outlier che abbiamo deciso di rimuovere. Consulta il notebook su DataLab per il codice completo di come lo abbiamo fatto.
Normalizzazione o scalatura dei dati
Se il tuo dataset copre un ampio intervallo di valori, valuta di scalarlo o normalizzarlo. Questo può permettere ai colori della heatmap di rappresentare con maggiore accuratezza le differenze relative. Metodi comuni includono min-max scaling e normalizzazione Z-score.
Per dati continui che necessitano di categorizzazione, considera la discretizzazione in bin o categorie per una visualizzazione della heatmap più significativa.
Sintassi e parametri
Per usare seaborn.heatmap(), in genere devi passare una matrice di dati. Poi puoi regolare i parametri per personalizzare le heatmap in base alle tue esigenze.
-
data: Il dataset da visualizzare, che deve essere in forma matriciale. -
cmap: Specifica la mappa di colori per la heatmap. Seaborn supporta varie palette di colori, incluse scale sequenziali, divergenti e qualitative. -
annot: Se impostato suTrue, il valore in ogni cella viene annotato sulla heatmap. -
fmt: Quando annot èTrue,fmtdetermina il codice di formattazione delle stringhe per annotare i dati. Ad esempio, 'd' per interi e '.2f' per numeri in virgola mobile con due decimali. -
linewidths: Imposta lo spessore delle linee che divideranno ogni cella. Un valore più grande aumenta la separazione tra le celle. -
linecolor: Specifica il colore delle linee che dividono ogni cella selinewidthsè maggiore di 0. -
cbar: Un valore booleano che indica se disegnare una barra dei colori. La barra fornisce un riferimento per mappare i valori ai colori. -
vminevmax: Questi parametri definiscono l’intervallo di dati coperto dalla mappa di colori. -
center: Imposta il valore attorno a cui centrare la mappa di colori quando si usano scale divergenti. -
square: Se impostato suTrue, garantisce che le celle della heatmap siano quadrate. -
xticklabelseyticklabels: Controllano le etichette visualizzate sugli assi x e y.
Creare la tua prima heatmap Seaborn
Creeremo una heatmap che mostra il coefficiente di correlazione tra ogni variabile numerica nei nostri dati. Per ora la manterremo semplice e la personalizzeremo ulteriormente nella sezione successiva.
# Calculate the correlation matrix
correlation_matrix = filtered_df.corr()
# Create the heatmap
plt.figure(figsize = (10,8))
sns.heatmap(correlation_matrix, cmap = 'coolwarm')
plt.show()

Personalizzare la tua heatmap Seaborn
Personalizzazione dei colori
Personalizzare i colori della heatmap la rende più leggibile e crea visual più d’impatto per report e presentazioni.
Seaborn e Matplotlib offrono un’ampia gamma di colormap integrate. Sperimenta con le colormap ("Blues", "coolwarm", "viridis", ecc.) per trovarne una che metta in risalto in modo efficace la struttura e i pattern dei tuoi dati. Usa colormap sequenziali per dati con un ordine naturale da basso ad alto, colormap divergenti per dati con un punto medio critico e colormap qualitative per dati categorici.
Tuttavia, non sei limitato alle colormap e alle opzioni predefinite fornite con Seaborn. Puoi creare colormap personalizzate con Matplotlib e specificare ulteriori opzioni, come regolare la trasparenza.
Impostare vmin e vmax ti permette di controllare l’intervallo di dati coperto dalla mappa di colori. Questo può aumentare il contrasto e concentrare l’attenzione su particolari intervalli di interesse.
Per le colormap divergenti, usa il parametro center per specificare il valore mediano. In questo modo il contrasto cromatico è ancorato a un valore critico.
Regoleremo la palette di colori della nostra heatmap e ancoreremo i colori specificando i valori min, max e center.
# Customize heatmap colors
plt.figure(figsize = (10,8))
sns.heatmap(correlation_matrix, cmap = 'viridis', vmin = -1, vmax = 1, center = 0)
plt.show()

Annotazione dei dati
L’annotazione dei dati consiste nell’aggiungere etichette all’interno di ogni cella che possono mostrare valori numerici o del testo. Le annotazioni rendono più facile leggere e interpretare rapidamente le heatmap senza dover dedurre i valori dalla legenda.
Per abilitare le annotazioni, imposta il parametro annot su True. Questo mostrerà i valori dei dati in ogni cella della heatmap.
Il parametro fmt ti consente di formattare il testo delle annotazioni. Ad esempio, usa 'd' per il formato intero e '.2f' per i numeri in virgola mobile visualizzati con due cifre decimali.
Benché la funzione heatmap di Seaborn non permetta direttamente di personalizzare le proprietà del testo come la dimensione del font tramite il parametro annot, puoi regolare queste proprietà globalmente usando gli rcParams di Matplotlib.
# Create an annotated heatmap
plt.figure(figsize = (10,8))
plt.rcParams.update({'font.size': 12})
sns.heatmap(correlation_matrix, cmap = 'viridis', vmin = -1, vmax = 1, center = 0, annot=True, fmt=".2f", square=True, linewidths=.5)
plt.show()

Il parametro annot può anche accettare una struttura tipo array della stessa forma dei tuoi dati. Questo è un trucchetto utile che ti permette di aggiungere annotazioni con informazioni diverse da quelle mostrate dai colori delle celle. Ecco un esempio di come potresti applicarlo:
# Example of alternative annotations
annot_array = np.round(data*100, decimals=2)
sns.heatmap(data, annot=annot_array, fmt='s')
Mascheratura dei dati
La mascheratura dei dati è una tecnica usata per evidenziare o nascondere selettivamente alcuni punti dati in base a condizioni specifiche. Questo può aiutare a concentrare l’attenzione su particolari aree di interesse o pattern nel dataset.
Per prima cosa, devi creare una maschera booleana con la stessa forma della tua matrice di dati. La maschera dovrebbe essere True (o False) per i punti dati che vuoi nascondere (o mostrare). Poiché la matrice di correlazione è simmetrica, possiamo usare la funzione triu di numpy per creare una maschera triangolare che copre solo la parte superiore della nostra heatmap.
# Create a mask using numpy's triu function
mask = np.triu(np.ones_like(correlation_matrix, dtype=bool))
Usa il parametro mask della funzione seaborn.heatmap() per applicare la tua maschera. I punti dati corrispondenti a True nella maschera verranno nascosti.
# Create a masked heatmap
plt.figure(figsize = (10,8))
plt.rcParams.update({'font.size': 12})
sns.heatmap(correlation_matrix, cmap = 'viridis', vmin = -1, vmax = 1, center = 0, annot=True, fmt=".2f", square=True, linewidths=.5, mask = mask)
plt.show()

Best practice ed errori comuni
Seguire queste best practice ti permetterà di usare le heatmap di Seaborn per creare visual d’impatto per i tuoi report e le tue presentazioni.
Ecco cinque best practice da considerare quando usi le heatmap di Seaborn:
1. Scegli la palette di colori giusta
La palette di colori che scegli influisce direttamente su come i tuoi dati vengono percepiti. Schemi cromatici diversi possono mettere in risalto o nascondere pattern all’interno dei dati.
Usa palette sequenziali per dati che progrediscono da basso ad alto e palette divergenti per dati con un punto medio significativo. Seaborn offre varie opzioni con il parametro cmap, permettendoti di adattare lo schema di colori al tuo dataset. Leggi il nostro tutorial, Seaborn Color Palette: guida rapida alla scelta dei colori, per conoscere tutte le opzioni di palette e come supportano diversi tipi di grafici.
2. Gestisci con cura i dati mancanti
I dati mancanti possono introdurre vuoti nella tua heatmap, potenzialmente fuorviando chi osserva. Prima di tracciare il grafico, decidi una strategia per gestirli. A seconda della loro rilevanza, potresti scegliere di imputare i valori mancanti o rimuoverli del tutto. In alternativa, rappresentare i dati mancanti con un colore o un pattern distinto può evidenziarne la presenza senza fuorviare l’osservatore.
3. Scala correttamente i dati
Dati con grandi varianze o outlier possono distorcere la visualizzazione, rendendo difficile capire se ci siano pattern. Normalizza o scala i dati per assicurarti che la heatmap rifletta accuratamente le differenze sull’intero dataset. A seconda della natura dei dati, tecniche come min-max scaling, normalizzazione Z-score o anche trasformazioni log possono essere utili.
4. Usa le annotazioni con parsimonia
Sebbene le annotazioni possano aggiungere dettagli preziosi mostrando i valori esatti, appesantire la heatmap con troppe annotazioni può renderla difficile da leggere, soprattutto per dataset di grandi dimensioni.
Limita le annotazioni ai punti chiave o usale in heatmap più piccole.
5. Regola le dimensioni della heatmap
Il rapporto d’aspetto e la dimensione predefiniti potrebbero non adattarsi al tuo dataset, portando a celle schiacciate o a una visualizzazione troppo compressa che nasconde i pattern.
Personalizza dimensioni e rapporto d’aspetto della heatmap per garantire che ogni cella sia chiaramente visibile e che il pattern complessivo sia facile da cogliere.
Conclusione
La funzione heatmap di Seaborn permette visualizzazioni d’impatto dei pattern nei dati ed è particolarmente utile per visualizzare le correlazioni tra variabili numeriche.
Tuttavia, è importante seguire le best practice. Tra queste: scegliere la palette di colori giusta, gestire con cura i dati mancanti, scalare correttamente i dati, usare le annotazioni con parsimonia e regolare le dimensioni della heatmap.
Ti interessa approfondire la libreria Seaborn? Il nostro corso Introduction to Data Visualization with Seaborn è perfetto per chi inizia; se invece hai già esperienza, puoi approfondire con il corso Intermediate Data Visualization with Seaborn.
Domande frequenti sulle heatmap di Seaborn
Perché le heatmap sono così efficaci per la visualizzazione dei dati?
Le heatmap usano il colore per rendere immediatamente riconoscibili pattern complessi nei dati. Sono particolarmente efficaci per identificare correlazioni, trend e cluster nei dataset, motivo per cui sono una scelta popolare per l’analisi esplorativa e le presentazioni.
Cosa dovrei preparare prima di creare una heatmap in Seaborn?
Assicurati che il tuo dataset sia in formato matrice, con righe e colonne che rappresentano le dimensioni che vuoi analizzare. Esegui la necessaria pre-elaborazione, come la pulizia dei valori mancanti, la gestione degli outlier e la scalatura o normalizzazione dei dati, per migliorare l’accuratezza e la chiarezza della tua heatmap.



