Varmekart
Et heatmap er en metode for å visualisere todimensjonale data ved å bruke farger til å representere størrelsen på hver verdi.
Dette eksempelet bruker et heatmap for å vise parvise korrelasjoner mellom variabler i et datasett.
Lage et enkelt heatmap
seaborn
har en funksjon som heter heatmap()
. Dens eneste påkrevde parameter er data
, som skal være et 2D (rektangulært) datasett.
Den kanskje vanligste bruken av et heatmap er med en korrelasjonsmatrise som i eksempelet ovenfor. Gitt en DataFrame
, bør man først kalle dens corr()
-metode for å få en korrelasjonsmatrise, og deretter sende denne matrisen som et argument til funksjonen heatmap()
:
En vanlig bruk av et heatmap er å vise en korrelasjonsmatrise. Gitt en DataFrame
, kall først dens corr()
-metode for å hente ut korrelasjonsmatrisen, og send deretter denne matrisen som et argument til funksjonen 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()
Korrelasjonsmatrisen ble opprettet ved å kun bruke numeriske kolonner i DataFrame
. Kolonner som inneholder tekst ble utelatt ved å sette numeric_only=True
.
Annotasjoner og farger
Dette varmekartet kan gjøres mer informativt ved å vise den aktuelle verdien (korrelasjonskoeffisienten i vårt tilfelle) i hver celle. Dette kan enkelt gjøres ved å sette parameteren annot
til True
.
Det er også mulig å endre fargene for varmekartet ved å sette cmap
-parameteren (du kan utforske dette i "Velge fargepaletter"-artikkelen).
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()
Fargeskalaen til høyre kan fjernes ved å sette cbar=False
.
I de fleste tilfeller er dette alt du trenger for en tilpasning av heatmap, men du kan alltid utforske mer i heatmap()
dokumentasjonen.
Forbedring av lesbarhet
Det siste som kan forbedre lesbarheten til vårt heatmap er å rotere merkene ved å bruke de allerede kjente funksjonene xticks()
og 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
- Bruk riktig metode for å lage en korrelasjonsmatrise.
- Sett argumentet til metoden slik at kun numeriske variabler inkluderes.
- Bruk riktig funksjon for å lage et varmekart.
- Sett
correlation_matrix
som data for varmekartet ved å spesifisere det som første argument. - Legg til verdiene i hver celle i matrisen ved å spesifisere det som andre argument.
- Sett paletten (fargekartet) for varmekartet til
'crest'
ved å spesifisere det som tredje (høyre) argument. - Roter x-akse- og y-akse-ticks 15 grader mot klokken ved å spesifisere et nøkkelordargument i
xticks()
ogyticks()
.
Løsning
Takk for tilbakemeldingene dine!