Lämpökartta
Heatmap eli lämpökartta on menetelmä kaksiulotteisen datan visualisointiin, jossa arvojen suuruudet esitetään väreinä.
Tässä esimerkissä lämpökarttaa käytetään kuvaamaan muuttujien välisiä korrelaatioita aineistossa.
Yksinkertaisen lämpökartan luominen
seaborn
-kirjastossa on funktio nimeltä heatmap()
. Sen ainoa pakollinen parametri on data
, jonka tulee olla kaksiulotteinen (suorakulmainen) aineisto.
Yksi yleisimmistä lämpökartan käyttötarkoituksista on korrelaatiomatriisin visualisointi, kuten yllä olevassa esimerkissä. Kun käytössä on DataFrame
, kutsutaan ensin sen corr()
-metodia korrelaatiomatriisin saamiseksi, ja tämän jälkeen tämä matriisi annetaan argumenttina heatmap()
-funktiolle:
Yleinen käyttötapa lämpökartalle on korrelaatiomatriisin esittäminen. Kun käytössä on DataFrame
, kutsu ensin sen corr()
-metodia saadaksesi korrelaatiomatriisin ja anna sitten tämä matriisi argumenttina heatmap()
-funktiolle.
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()
Korrelaatiomatriisi luotiin käyttämällä vain numeerisia sarakkeita DataFrame
-rakenteesta. Merkkijonoja sisältävät sarakkeet jätettiin pois asettamalla numeric_only=True
.
Annotaatiot ja värit
Tätä lämpökarttaa voidaan tehdä informatiivisemmaksi kirjoittamalla sopiva arvo (korrelaatiokerroin tässä tapauksessa) jokaiseen soluun. Tämä onnistuu yksinkertaisesti asettamalla annot
-parametri arvoon True
.
On myös mahdollista muuttaa lämpökartan värejä asettamalla cmap
-parametri (voit tutustua siihen "Choosing color palettes" -artikkelissa).
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()
Väripalkin oikealla puolella voi poistaa asettamalla cbar=False
.
Useimmissa tapauksissa tämä riittää lämpökartan mukauttamiseen, mutta voit aina tutustua lisää heatmap()
dokumentaatiossa.
Luettavuuden parantaminen
Viimeinen asia, joka parantaa lämpökarttamme luettavuutta, on asteikkojen kiertäminen käyttämällä jo tuttuja xticks()
ja yticks()
-funktioita:
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
- Käytä oikeaa menetelmää korrelaatiomatriisin luomiseen.
- Aseta menetelmän argumentiksi, että mukaan otetaan vain numeeriset muuttujat.
- Käytä oikeaa funktiota lämpökartan luomiseen.
- Aseta
correlation_matrix
lämpökartan dataksi määrittämällä se ensimmäiseksi argumentiksi. - Lisää matriisin jokaisen solun arvot määrittämällä toinen argumentti.
- Aseta lämpökartan paletti (värikartta) arvoksi
'crest'
määrittämällä se kolmanneksi (oikeanpuoleisimmaksi) argumentiksi. - Kierrä x- ja y-akselin asteikkoja 15 astetta vastapäivään määrittämällä avainsana-argumentti
xticks()
- jayticks()
-funktioissa.
Ratkaisu
Kiitos palautteestasi!