[Explained] Jak vytvořit teplotní mapu v Pythonu

Vizualizace je důležitý způsob, jak dát smysl datům a čerpat informativní a použitelné poznatky. Dobrý vizuál umožňuje čtenáři získat základní představu o informacích pouhým pohledem.

Oblíbenou vizualizací používanou k prohlížení dat je teplotní mapa. V tomto článku vysvětlím teplotní mapu a jak ji vytvořit v Pythonu pomocí Matplotlib, Seaborn a Plotly.

Co je teplotní mapa?

Zdroj: seaborn.pydata.org

Teplotní mapa je 2-rozměrný obrázek představující data jako matici nebo mřížku bodů. Odstín barevného grafu představuje každý datový bod. Tmavší odstíny představují vyšší hodnoty než světlejší odstíny.

Teplotní mapy usnadňují identifikaci vzorců, trendů a variací v datech. Poskytují souhrnné informace, které uživatelům umožňují rychle vidět oblasti s vysokými nebo nízkými hodnotami, shluky nebo odlehlé hodnoty.

Kde se tepelné mapy používají?

Teplotní mapy jsou užitečné, když ukazují, jak se hodnoty mění v prostoru. Mezi každodenní případy použití patří:

Počasí

Nejoblíbenější teplotní mapa, kterou většina lidí viděla, je doslovná teplotní mapa – ukazující, jak se teplota mění na různých místech.

Toto je příklad předpovědi počasí z Daily Express zobrazující očekávané teploty jako teplotní mapu. To usnadňuje vizualizaci, která místa budou horká, studená nebo mezi nimi.

Zobrazení využití webu/aplikace

Zdroj: HotJar

Pomocí sledování pohybů myši, kliknutí a vzorů posouvání pomáhají tepelné mapy identifikovat oblíbené nebo opomíjené oblasti webové stránky. To pak lze použít k optimalizaci uživatelského rozhraní a vylepšení uživatelské zkušenosti.

Lékařské zobrazování

Zdroj: researchgate.net

Teplotní mapy zobrazují oblasti s vysokou nebo nízkou aktivitou v těle. To může identifikovat anomálie a nemoci a posoudit progresi nebo reakci na léčbu u stavů, jako je rakovina.

Knihovny pro vytváření teplotních map v Pythonu

Python je populární jazyk pro analýzu a vizualizaci dat. Je to kvůli jeho jednoduché syntaxi a rozsáhlému ekosystému. Existuje několik knihoven, které můžete použít k vytvoření heatmap v Pythonu. Tyto zahrnují:

  • Matplotlib – oblíbená knihovna pro vizualizaci dat. Jedná se o nízkoúrovňovou knihovnu, která poskytuje více možností přizpůsobení, ale je komplikovaná.
  • Seaborn – Tato vizualizační knihovna je postavena na Matplotlibu a zjednodušuje některé jeho funkce a zároveň poskytuje lépe vypadající vizualizace.
  • Plotly – Toto je vizualizační knihovna, která poskytuje snadno použitelné API pro vytváření teplotních map v Pythonu.
  Bingo Clash Cheaty: Uplatněte nyní

V další části prozkoumáme, jak vytvořit heatmapy pomocí všech těchto knihoven.

Jak vygenerovat teplotní mapu?

V této části prozkoumám, jak vytvořit heatmapy pomocí Matplotlib, Seaborn a Plotly. Pro kódování budu používat Google Colab. Jedná se o volně použitelnou instanci notebooku Python, který ke spuštění vašeho kódu používá infrastrukturu Google. Nevyžaduje žádné nastavování, takže jej můžete použít i k následování. Nejprve si probereme Matplotlib.

Matplotlib

Nejprve začneme importem knihovny Matplotlib.

import matplotlib.pyplot as plt

NumPy budeme také potřebovat ke generování náhodné datové sady.

import numpy as np

Pro vygenerování datové sady přidáme následující kód:

# Creating a seed for reproducibility
np.random.seed(2)

# Generating 10 x 10 array of integers between 1 and 50
data = np.random.randint(low = 1, high = 50, size = (10, 10))

K vykreslení dat používáme metodu imshow. Jako argument předáváme data. Můžeme udělat více předáním dalších argumentů, ke kterým se dostaneme později.

plt.imshow(data)

Pokud buňku spustíte, měli byste vidět teplotní mapu.

I když je to skvělé, máte k dispozici mnoho možností přizpůsobení. Pro začátek můžete změnit barvu použitou v obrázku pomocí argumentu cmap, který předáte imshow. Pokud byste například chtěli změnit barvu používanou heatmapou na různé odstíny modré, vygenerovali byste graf s následujícím.

plt.imshow(data, cmap = 'Blues')

Úplný seznam možností cmap naleznete tady. Každopádně výsledek výše uvedeného by byl:

Teplotní mapa by byla užitečnější, kdyby existoval klíč k vysvětlení toho, co barvy představují. Chcete-li to provést, přidejte následující kód:

plt.colorbar()

Poté byste měli získat obrázek, který vypadá takto:

Barevný pruh je užitečný, ale v některých případech můžete chtít anotovat různé hodnoty, aby divák přesně viděl, co je znázorněno. Chcete-li to provést, napište text 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 heatmapou uděláme, je nastavení značek tick na osách. Pro osu x použijeme funkci plt.xticks a pro osu y funkci plt.yticks. Tyto metody se nazývají stejným způsobem; jediným rozdílem je osa, kterou každá metoda ovlivňuje.

  8 nejlepších hostingových platforem pro prodejce pro vaše další podnikání

Prvním argumentem je seznam míst pro vložení klíšťat. To je reprezentováno jako pole indexů. Následující argument je skutečný seznam štítků, které by byly vloženy. Zde je příklad toho, jak bychom vložili klíště:

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 vytvoříte heatmapu v Matplotlib. Kompletní řešení kódu je podrobně popsáno níže.

import numpy as np
import matplotlib.pyplot as plt

# Creating a seed for reproducibility
np.random.seed(2)

# Generating 10 x 10 array of integers between 1 and 50
data = np.random.randint(low = 1, high = 50, size = (10, 10))

# Creating a plot with blue as a color
plt.imshow(data, cmap = 'Blues')

# Displaying a color bar
plt.colorbar()

# Annotating values
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",
      )

# Creating lists of tick labels
x_labels = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
y_labels = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']

# Adding the tick labels
plt.xticks(np.arange(len(x_labels)), labels=x_labels)
plt.yticks(np.arange(len(y_labels)), labels=y_labels)

Použití Matplotlib však není nejjednodušší řešení. Jak uvidíme dále, další knihovny, jako Seaborn a Matplotlib, zjednodušují proces vytváření heatmap.

Seaborn

V této části zopakujeme předchozí příklad pomocí Seaborn. Seaborn je knihovna, která staví na Matplotlib. Poskytuje abstrakce, které usnadňují práci. Pro vytvoření heatmapy 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 to Seaborn vyžaduje. Dále musíme také importovat NumPy, abychom vygenerovali náhodnou datovou sadu. Nakonec musíme importovat Seaborn.

Dále vygenerujeme datovou sadu pomocí NumPy.

# Creating a seed for reproducibility
np.random.seed(2)

# Generating 10 x 10 array of integers between 1 and 50
data = np.random.randint(low = 1, high = 50, size = (10, 10))

Poté vytvoříme naše seznamy štítků.

# Tick labels
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í heatmapu voláním funkce heatmap modulu sn.

hm = sn.heatmap(data = data, cmap = 'Oranges', annot = True, yticklabels = y_labels, xticklabels = x_labels)

Jak vidíte, prošli jsme několika argumenty. Zde je vysvětlení pro každou z nich:

  • data je datová sada, kterou chceme vykreslit
  • cmap je barevné schéma, pomocí kterého chceme tepelnou mapu vytvořit
  • annot uvádí, zda chceme datové body anotovat jejich skutečnou hodnotou
  • yticklabels je seznam štítků, které chceme pro značky svislé osy
  • xticklabels je seznam štítků pro značky vodorovné osy.
  Jak hrát hru Poeltl Unlimited

Nakonec ukážeme graf pomocí kódu:

plt.show()

Tím se vygeneruje následující teplotní mapa:

Zápletka

Pro Plotly je proces podobný jako u Seaborn. Zde je osnova kódu pro vytvoření tepelné mapy v Plotly:

import plotly.express as px
import numpy as np

# Creating a seed for reproducibility
np.random.seed(2)

# Generating 10 x 10 array of integers between 1 and 50
data = np.random.randint(low = 1, high = 50, size = (10, 10))

# Tick labels
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, heatmapa se generuje na posledním řádku pomocí funkce px.imshow(). Tato funkce přijímá data k vykreslení jako poziční argument. Kromě toho trvá argument klíčového slova takto:

  • text_auto je logická hodnota, která umožňuje anotaci, když je nastavena na hodnotu true
  • x je seznam štítků na ose x
  • y je seznam štítků na ose y
  • color_continuous_scale určuje barevné schéma použité pro graf.

Jak vidíte, Plotly je jednodušší než Seaborn a Matplotlib. Kromě toho je vygenerovaný graf interaktivní ve srovnání s jinými knihovnami, které vytvářejí statické obrázky.

Zde je snímek obrazovky s konečným výsledkem:

Závěrečná slova

V tomto článku jsme se zabývali tím, jak vytvořit heatmapy v Pythonu. Pokryli jsme hlavní knihovny – Matplotlib, Seaborn a Plotly. Také jsme viděli, jak Seaborn a Plotly poskytují zjednodušené abstrakce přes Matplotlib. Jedním z kritických způsobů použití Heatmaps je sledování toho, jak lidé používají vaše webové stránky.

Dále se podívejte na nástroje heatmap, které vám řeknou, kam vaši uživatelé klikají.