Mappa di Calore
Una heatmap è un metodo per visualizzare dati bidimensionali utilizzando colori per rappresentare l'intensità di ciascun valore.
Questo esempio utilizza una heatmap per rappresentare le correlazioni a coppie tra variabili in un dataset.
Creazione di una Heatmap Semplice
seaborn
dispone di una funzione chiamata heatmap()
. Il suo unico parametro obbligatorio è data
, che deve essere un dataset 2D (rettangolare).
Forse il caso d'uso più comune di una heatmap è con una matrice di correlazione come nell'esempio sopra. Dato un DataFrame
, è necessario prima chiamare il suo metodo corr()
per ottenere una matrice di correlazione e solo successivamente passare questa matrice come argomento alla funzione heatmap()
:
Un caso d'uso comune per una heatmap è la visualizzazione di una matrice di correlazione. Dato un DataFrame
, chiamare prima il suo metodo corr()
per ottenere la matrice di correlazione, quindi passare questa matrice come argomento alla funzione heatmap()
.
import seaborn as sns import matplotlib.pyplot as plt import pandas as pd # Loading the dataset with the countries data url = 'https://staging-content-media-cdn.codefinity.com/courses/47339f29-4722-4e72-a0d4-6112c70ff738/countries_data.csv' countries_df = pd.read_csv(url, index_col=0) # Creating a correlation matrix with all numeric variables correlation_matrix = countries_df.corr(numeric_only=True) # Creating a heatmap based on the correlation matrix sns.heatmap(correlation_matrix) plt.show()
La matrice di correlazione è stata creata utilizzando solo le colonne numeriche del DataFrame
. Le colonne contenenti stringhe sono state escluse impostando numeric_only=True
.
Annotazioni e Colori
Questa heatmap può essere resa più informativa inserendo il valore appropriato (coefficiente di correlazione in questo caso) in ciascuna cella. Ciò può essere fatto semplicemente impostando il parametro annot
su True
.
È anche possibile modificare i colori della nostra heatmap impostando il parametro cmap
(puoi esplorarlo nell'articolo "Choosing color palettes").
import seaborn as sns import matplotlib.pyplot as plt import pandas as pd # Loading the dataset with the countries data url = 'https://staging-content-media-cdn.codefinity.com/courses/47339f29-4722-4e72-a0d4-6112c70ff738/countries_data.csv' countries_df = pd.read_csv(url, index_col=0) # Creating a correlation matrix with all numeric variables correlation_matrix = countries_df.corr(numeric_only=True) # Setting annotation and color palette sns.heatmap(correlation_matrix, annot=True, cmap='viridis') plt.show()
La barra dei colori a destra può essere rimossa impostando cbar=False
.
Nella maggior parte dei casi, queste sono tutte le personalizzazioni di cui avrai bisogno per una heatmap, tuttavia puoi sempre approfondire consultando la documentazione di heatmap()
.
Migliorare la leggibilità
L'ultimo aspetto che può migliorare la leggibilità della nostra heatmap è ruotare i tick utilizzando le già note funzioni xticks()
e yticks()
:
import seaborn as sns import matplotlib.pyplot as plt import pandas as pd # Loading the dataset with the countries data url = 'https://staging-content-media-cdn.codefinity.com/courses/47339f29-4722-4e72-a0d4-6112c70ff738/countries_data.csv' countries_df = pd.read_csv(url, index_col=0) # Creating a correlation matrix with all numeric variables correlation_matrix = countries_df.corr(numeric_only=True) # Creating a heatmap based on the correlation matrix sns.heatmap(correlation_matrix, annot=True, cmap='viridis') # Rotating the ticks by 20 degrees counterclockwise plt.xticks(rotation=20) plt.yticks(rotation=20) plt.show()
Swipe to start coding
- Utilizzare il metodo corretto per creare una matrice di correlazione.
- Impostare l'argomento del metodo per includere solo variabili numeriche.
- Utilizzare la funzione corretta per creare una heatmap.
- Impostare
correlation_matrix
come dati per la heatmap specificando il primo argomento. - Aggiungere i valori in ogni cella della matrice specificando il secondo argomento.
- Impostare la palette (mappa dei colori) della heatmap su
'crest'
specificando il terzo (ultimo) argomento. - Ruotare le etichette degli assi x e y di 15 gradi in senso antiorario specificando un argomento keyword in
xticks()
eyticks()
.
Soluzione
Grazie per i tuoi commenti!