Vizualizace hraje klíčovou roli v interpretaci dat a získávání užitečných informací. Efektivní grafické znázornění umožňuje čtenářům okamžitě pochopit podstatu prezentovaných dat.
Jednou z oblíbených metod vizualizace dat je teplotní mapa. V tomto textu si vysvětlíme, co je to teplotní mapa a ukážeme si, jak ji vytvořit v Pythonu s využitím knihoven Matplotlib, Seaborn a Plotly.
Co je to teplotní mapa?
Zdroj: seaborn.pydata.org
Teplotní mapa je grafické znázornění dat ve dvou rozměrech, kde jsou data uspořádána do matice nebo mřížky. Každý datový bod je reprezentován specifickým odstínem barvy. Tmavší barvy obvykle indikují vyšší hodnoty, zatímco světlejší odstíny představují nižší hodnoty.
Teplotní mapy usnadňují odhalování vzorců, trendů a odchylek v datech. Poskytují zhuštěný přehled informací, který umožňuje uživatelům rychle identifikovat oblasti s vysokými či nízkými hodnotami, shluky dat nebo výjimečné hodnoty.
Kde se používají teplotní mapy?
Teplotní mapy se výborně hodí k zobrazení změn hodnot v prostoru. Běžné příklady jejich použití zahrnují:
Předpověď počasí
Nejběžnější teplotní mapou, se kterou se setkáváme, je zobrazení teploty na různých místech.
Například Daily Express prezentuje předpověď počasí pomocí teplotní mapy. Díky tomu je snadné si vizualizovat, které oblasti budou mít vysoké, nízké, nebo průměrné teploty.
Analýza využití webových stránek a aplikací
Zdroj: HotJar
Sledováním pohybu myši, kliknutí a posouvání stránky umožňují teplotní mapy zjistit, které části webové stránky jsou nejvíce navštěvované a které jsou naopak opomíjené. Tyto informace se pak dají použít k optimalizaci uživatelského rozhraní a zlepšení uživatelské zkušenosti.
Lékařské zobrazování
Zdroj: researchgate.net
Teplotní mapy umožňují zobrazit oblasti s vysokou nebo nízkou aktivitou v lidském těle. Díky tomu je možné odhalit abnormality, nemoci, a monitorovat průběh a reakci na léčbu, například u rakoviny.
Knihovny pro tvorbu teplotních map v Pythonu
Python je oblíbený programovací jazyk pro analýzu a vizualizaci dat, a to díky jeho jednoduché syntaxi a rozsáhlému ekosystému. Existuje několik knihoven, které můžete použít pro vytváření teplotních map v Pythonu. Mezi ně patří:
- Matplotlib – populární knihovna pro vizualizaci dat. Je to nízkoúrovňová knihovna nabízející široké možnosti přizpůsobení, avšak může být složitější na používání.
- Seaborn – vizualizační knihovna postavená na Matplotlibu. Zjednodušuje některé jeho funkce a nabízí vizuálně atraktivnější výstupy.
- Plotly – knihovna, která poskytuje jednoduché rozhraní pro vytváření interaktivních teplotních map v Pythonu.
V následující části se podíváme, jak vytvořit teplotní mapy pomocí všech těchto knihoven.
Jak vytvořit teplotní mapu?
V této části si ukážeme, jak generovat teplotní mapy pomocí knihoven Matplotlib, Seaborn a Plotly. Pro programování budeme využívat Google Colab, což je volně dostupný Python notebook. Začneme s knihovnou Matplotlib.
Matplotlib
Začneme importováním knihovny Matplotlib.
import matplotlib.pyplot as plt
Pro generování náhodných dat budeme potřebovat také NumPy.
import numpy as np
Následující kód vygeneruje datovou sadu:
# Nastavení seedu pro opakovatelnost np.random.seed(2) # Generování 10 x 10 matice celých čísel mezi 1 a 50 data = np.random.randint(low = 1, high = 50, size = (10, 10))
K zobrazení dat použijeme metodu imshow. Předáme jí data jako argument. Můžeme přidat i další argumenty, kterým se budeme věnovat později.
plt.imshow(data)
Po spuštění tohoto kódu byste měli vidět teplotní mapu.
K dispozici je mnoho možností přizpůsobení. Můžete například změnit barvu použitou v grafu pomocí argumentu cmap, který předáte funkci imshow. Například pokud chcete, aby měla teplotní mapa různé odstíny modré, použijte následující kód.
plt.imshow(data, cmap = 'Blues')
Úplný seznam možností cmap naleznete zde. Výsledkem výše uvedeného kódu by bylo:
Teplotní mapa by byla užitečnější, kdyby existoval klíč vysvětlující, co jednotlivé barvy znamenají. Chcete-li jej přidat, použijte následující kód:
plt.colorbar()
Měli byste obdržet obrázek, který vypadá takto:
Barevná škála je užitečná, ale v některých případech můžete chtít anotovat jednotlivé hodnoty, aby divák přesně viděl, co je zobrazeno. To se dá provést zápisem textu do každé buňky pomocí plt.text().
for i in range(data.shape[0]): for j in range(data.shape[1]): plt.text(j, i, '%d' % data[i, j], horizontalalignment="center", verticalalignment="center", )
Poslední věcí, kterou s teplotní mapou uděláme, je nastavení značek na osách. Pro osu x použijeme funkci plt.xticks a pro osu y funkci plt.yticks. Tyto metody se volají stejným způsobem; jediný rozdíl je osa, kterou každá metoda ovlivňuje.
Prvním argumentem je seznam míst pro vložení značek. Ten je reprezentován jako pole indexů. Další argument je samotný seznam popisků, které se vloží. Zde je příklad, jak bychom vložili značky:
x_labels = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'] y_labels = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'] plt.xticks(np.arange(len(x_labels)), labels=x_labels) plt.yticks(np.arange(len(y_labels)), labels=y_labels)
A to je vše! Takto se tvoří teplotní mapa v Matplotlibu. Celé řešení kódu je podrobně popsáno níže.
import numpy as np import matplotlib.pyplot as plt # Nastavení seedu pro opakovatelnost np.random.seed(2) # Generování 10 x 10 matice celých čísel mezi 1 a 50 data = np.random.randint(low = 1, high = 50, size = (10, 10)) # Vytvoření grafu s modrou barvou plt.imshow(data, cmap = 'Blues') # Zobrazení barevné škály plt.colorbar() # Anotace hodnot for i in range(data.shape[0]): for j in range(data.shape[1]): plt.text(j, i, '%d' % data[i, j], horizontalalignment="center", verticalalignment="center", ) # Vytvoření seznamů popisků x_labels = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'] y_labels = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'] # Přidání popisků plt.xticks(np.arange(len(x_labels)), labels=x_labels) plt.yticks(np.arange(len(y_labels)), labels=y_labels)
Nicméně, Matplotlib není nejjednodušší řešení. Jak uvidíme dále, další knihovny, jako Seaborn a Matplotlib, tento proces zjednodušují.
Seaborn
V této části zopakujeme předchozí příklad pomocí knihovny Seaborn. Seaborn je knihovna, která je postavena na Matplotlibu a nabízí abstrakce, které usnadňují práci. Pro vytvoření teplotní mapy začneme importem knihoven, které budeme používat.
import matplotlib.pyplot as plt import numpy as np import seaborn as sn
Importovali jsme Matplotlib, protože ho Seaborn vyžaduje. Dále musíme importovat NumPy pro generování náhodné datové sady. A nakonec musíme importovat Seaborn.
Dále vygenerujeme datovou sadu pomocí NumPy.
# Nastavení seedu pro opakovatelnost np.random.seed(2) # Generování 10 x 10 matice celých čísel mezi 1 a 50 data = np.random.randint(low = 1, high = 50, size = (10, 10))
Poté vytvoříme seznamy popisků.
# Popisky x_labels = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'] y_labels = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
Nakonec vytvoříme vlastní teplotní mapu voláním funkce heatmap z modulu sn.
hm = sn.heatmap(data = data, cmap = 'Oranges', annot = True, yticklabels = y_labels, xticklabels = x_labels)
Jak vidíte, předali jsme několik argumentů. Zde je vysvětlení pro každý z nich:
- data je datová sada, kterou chceme vykreslit
- cmap je barevné schéma, které chceme použít pro teplotní mapu
- annot určuje, zda chceme datové body anotovat jejich skutečnou hodnotou
- yticklabels je seznam popisků, které chceme pro značky svislé osy
- xticklabels je seznam popisků pro značky vodorovné osy.
Nakonec zobrazíme graf pomocí kódu:
plt.show()
Tímto se vygeneruje následující teplotní mapa:
Plotly
Pro knihovnu Plotly je postup podobný jako u Seabornu. Zde je osnova kódu pro vytvoření teplotní mapy v Plotly:
import plotly.express as px import numpy as np # Nastavení seedu pro opakovatelnost np.random.seed(2) # Generování 10 x 10 matice celých čísel mezi 1 a 50 data = np.random.randint(low = 1, high = 50, size = (10, 10)) # Popisky x_labels = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'] y_labels = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'] px.imshow(data, text_auto = True, x = x_labels, y = y_labels, color_continuous_scale="greys")
Jak vidíte, teplotní mapa se generuje na posledním řádku pomocí funkce px.imshow(). Tato funkce přijímá data k vykreslení jako poziční argument. Kromě toho bere argumenty klíčových slov:
- text_auto je logická hodnota, která umožňuje anotaci, když je nastavena na hodnotu true
- x je seznam popisků osy x
- y je seznam popisků osy y
- color_continuous_scale určuje barevné schéma, které se použije pro graf.
Jak vidíte, Plotly je jednodušší než Seaborn a Matplotlib. Navíc je vygenerovaný graf interaktivní, na rozdíl od ostatních knihoven, které vytvářejí statické obrázky.
Zde je snímek obrazovky s konečným výsledkem:
Závěrem
V tomto textu jsme si vysvětlili, jak vytvářet teplotní mapy v Pythonu. Probrali jsme tři hlavní knihovny – Matplotlib, Seaborn a Plotly. Viděli jsme, že Seaborn a Plotly poskytují jednodušší abstrakce oproti Matplotlibu. Jedním z klíčových případů využití teplotních map je sledování, jak uživatelé používají vaše webové stránky.
Podívejte se na nástroje pro teplotní mapy, které vám ukážou, kam vaši uživatelé klikají.