Mapa ciepła (ang. heatmap) jest ciekawym sposobem na graficzną prezentację danych, w której poszczególne wartości zawarte w macierzy są reprezentowane przez skalę kolorów. Prościej mówiąc mapa ciepła wizualizuje dane poprzez różnice w kolorystyce. Od razu widać na wykresie różnice, gdzie są wyższe wartości! Można porównać ją do mapy geograficznej, gdzie widoczne są góry i niziny.
Aby lepiej to zobrazować poniżej przykład przedstawiający dwa hiperparametry podczas trenowania jednego z modeli szacującego ryzyko klienta. Im ciemniejszy niebieski kolor tym moc modelu wyższa (wybaczcie, że nie podaję dokładnych wartości – tajemnica bankowa :P). Od razu można zauważyć, że im wyższa głębokość i mniejszy krok uczenia tym model zwracał lepsze wyniki. Jest to zgodne z intuicją:
Mapa ciepła – do czego może być przydatna?
Mapy ciepła możesz użyć między innymi do:
- sprawdzania danych wielowymiarowych poprzez umieszczanie zmiennych w wierszach i kolumnach oraz kolorowanie komórek w tabeli,
- pokazywania wariancji wielu zmiennych,
- ujawniania wszelkich wzorców,
- wyświetlania, czy jakiekolwiek zmienne są do siebie podobne,
- wykrywania, czy między nimi istnieją jakiekolwiek korelacje.
Na co zwrócić uwagę?
Często wszystkie wiersze stanowią jedną kategorię (etykiety wyświetlane u góry lub u dołu), a wszystkie kolumny to druga kategoria wyświetlana na drugiej osi. Komórki zawarte w tabeli zawierają oznaczone kolorami:
- dane kategorialne dla zmiennych kategorycznych (dane kategoryczne są kodowane kolorami),
- dane liczbowe oparte na skali kolorów dla danych ciągłych (dane liczbowe wymagają skali kolorów, która łączy się z jednym kolorem w inny, aby przedstawić różnicę między wysokimi i niskimi wartościami).
Pamiętaj, by zawsze wyświetlić legendę przy wykresie, aby mapa ciepła była prawidłowo odczytana. Można zastosować wybór jednolitych kolorów lub można użyć skali gradientu dla pojedynczego zakresu (na przykład 0–100), łącząc dwa lub więcej kolorów razem.
Ciekawym rozwiązaniem jest również wykorzystanie wykresu do prezentacji zmian danych w czasie. Wystarczy, że wiersze lub kolumny przedstawiają ustalony przedział czasu.
Uwaga! Mapa ciepła lepiej nadaje się do wyświetlania bardziej uogólnionego widoku danych liczbowych. Wynika to z tego, że trudno jest dokładnie określić różnice między odcieniami kolorów.
Kod w Python
Pobieramy już dobrze nam znane dane odnośnie średniej długości życia w różnych krajach na przestrzeni lat:
import plotly.express as px
df = px.data.gapminder()
df.head(3)
Następnie przygotowujemy transpozycję danych, by zamienić ją na kształt dwuwymiarowej macierzy.
data = df[df['continent'] == 'Europe'][['country','year','lifeExp']]
data = data.pivot("country", "year", "lifeExp")
data.head(3)
Wczytajmy bibliotekę seaborn. Zobacz jak prosto na tak przygotowanych danych narysować mapę ciepła!
import seaborn as sns
sns.set(rc={'figure.figsize':(10,8)})
ax = sns.heatmap(data)
Jeśli chcesz wyświetlić wartości możesz dodać parametr „annot =True„. Ponadto parametrem (linewidths) możesz dodać nieznaczną przerwę pomiędzy poszczególnymi prostokątami wypełnionymi kolorami.
ax = sns.heatmap(data, linewidths=0.5, annot=True)
Również prosto jest zmienić szatę graficzną czy zakres wartości minimalnych i maksymalnych:
ax = sns.heatmap(data, linewidths=0.5, cmap="YlGnBu", vmin=40, vmax=90)
Więcej parametrów możesz znaleźć w dokumentacji biblioteki!
Zwróć proszę jeszcze uwagę, jak wartości odstające mogą zaburzyć powyższy wykres. Specjalnie dodam obserwację wynoszącą 0. Odczytanie zależności znika. Zwróć uwagę przy tym stosując ten rodzaj wykresu!
import numpy as np
data2 = data.copy()
data2.loc[data2.shape[0],:] = np.zeros(12)
data2.rename(index={30:'Odstająca zmienna'},inplace=True)
ax = sns.heatmap(data2, linewidths=0.5, cmap="YlGnBu")
Mam nadzieję, że również ten rodzaj wykresu dodasz do swojego arsenału i chętnie po niego będziesz sięgać!
Pozdrawiam serdecznie z całego serducha!