Värmekarta
En värmekarta är en metod för att visualisera tvådimensionell data genom att använda färger för att representera storleken på varje värde.
Detta exempel använder en värmekarta för att representera parvisa korrelationer mellan variabler i en datamängd.
Skapa en enkel värmekarta
seaborn
har en funktion som heter heatmap()
. Dess enda obligatoriska parameter är data
, som ska vara en tvådimensionell (rektangulär) datamängd.
Det kanske vanligaste användningsområdet för en värmekarta är med en korrelationsmatris som i exemplet ovan. Givet en DataFrame
bör vi först anropa dess corr()
-metod för att få en korrelationsmatris och därefter skicka denna matris som ett argument till funktionen heatmap()
:
Ett vanligt användningsområde för en värmekarta är att visa en korrelationsmatris. Givet en DataFrame
, anropa först dess corr()
-metod för att erhålla korrelationsmatrisen och skicka sedan denna matris som ett argument till funktionen heatmap()
.
import seaborn as sns import matplotlib.pyplot as plt import pandas as pd # Loading the dataset with the countries data url = 'https://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()
Korrelationsmatrisen skapades med enbart numeriska kolumner i DataFrame
. Kolumner som innehåller strängar exkluderades genom att ange numeric_only=True
.
Annotationer och färger
Denna värmekarta kan göras mer informativ genom att skriva ut det aktuella värdet (korrelationskoefficienten i detta fall) i varje cell. Detta kan enkelt göras genom att sätta parametern annot
till True
.
Det är också möjligt att ändra färgerna för vår värmekarta genom att ange parametern cmap
(du kan utforska detta i "Välja färgpaletter"-artikeln).
import seaborn as sns import matplotlib.pyplot as plt import pandas as pd # Loading the dataset with the countries data url = 'https://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()
Färgskalan till höger kan tas bort genom att ange cbar=False
.
I de flesta fall är detta allt du behöver för en anpassning av värmekarta, men du kan alltid utforska mer i heatmap()
dokumentationen.
Förbättrad läsbarhet
Det sista som skulle förbättra läsbarheten av vår värmekarta är att rotera markeringarna med de redan bekanta funktionerna xticks()
och yticks()
:
import seaborn as sns import matplotlib.pyplot as plt import pandas as pd # Loading the dataset with the countries data url = 'https://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
- Använd rätt metod för att skapa en korrelationsmatris.
- Ange argumentet för metoden så att endast numeriska variabler inkluderas.
- Använd rätt funktion för att skapa en värmekarta (heatmap).
- Ange
correlation_matrix
som data för värmekartan genom att specificera det som första argument. - Lägg till värden i varje cell i matrisen genom att specificera det som andra argument.
- Ange paletten (färgkartan) för värmekartan till
'crest'
genom att specificera det som tredje (sista) argument. - Rotera x- och y-axelns etiketter 15 grader moturs genom att ange ett nyckelordsargument i
xticks()
ochyticks()
.
Lösning
Tack för dina kommentarer!