[Explained] Hogyan készítsünk hőtérképet Pythonban

A vizualizáció fontos módja az adatok értelmezésének, valamint informatív és gyakorlatias betekintésnek. A jó kép lehetővé teszi az olvasó számára, hogy egy pillantással alapvető képet kapjon az információról.

Az adatok megtekintésére használt népszerű vizualizáció a hőtérkép. Ebben a cikkben elmagyarázom egy hőtérképet, és azt, hogyan lehet Pythonban létrehozni egyet a Matplotlib, a Seaborn és a Plotly használatával.

Mi az a hőtérkép?

Forrás: seaborn.pydata.org

A hőtérkép egy kétdimenziós kép, amely az adatokat mátrixként vagy pontrácsként ábrázolja. A színdiagram egy árnyalata képviseli az egyes adatpontokat. A sötétebb árnyalatok magasabb értékeket képviselnek, mint a világosabbak.

A hőtérképek megkönnyítik a minták, trendek és adatok eltéréseinek azonosítását. Összefoglaló információkat nyújtanak, amelyek segítségével a felhasználók gyorsan láthatják a magas vagy alacsony értékeket, klasztereket vagy kiugró értékeket.

Hol használják a hőtérképeket?

A hőtérképek hasznosak az értékek térbeli változásainak bemutatásában. A mindennapi használati esetek a következők:

Időjárás

A legnépszerűbb hőtérkép, amelyet a legtöbben láttak, egy szó szerinti hőtérkép – megmutatja, hogyan változik a hőmérséklet a különböző helyeken.

Ez egy példa az időjárás-előrejelzésről a Daily Express hőtérképként mutatja a várható hőmérsékleteket. Így könnyebben láthatóvá válik, hogy mely helyek lesznek melegek, hidegek vagy a kettő között.

Webhely/alkalmazáshasználat megjelenítése

Forrás: HotJar

Az egérmozgások, kattintások és görgetési minták nyomon követésével a hőtérképek segítenek azonosítani a weboldal népszerű vagy elhanyagolt területeit. Ez felhasználható a felhasználói felületek optimalizálására és a felhasználói élmény fokozására.

Orvosi képalkotás

Forrás: researchgate.net

A hőtérképek a test magas vagy alacsony aktivitású területeit jelenítik meg. Ez azonosíthatja az anomáliákat és betegségeket, és felmérheti a progressziót vagy a kezelésre adott választ olyan állapotok esetén, mint a rák.

Könyvtárak hőtérképek létrehozásához Pythonban

A Python egy népszerű nyelv az adatok elemzésére és megjelenítésére. Ennek oka az egyszerű szintaxis és a kiterjedt ökoszisztéma. Számos könyvtár használható hőtérképek létrehozására a Pythonban. Ezek tartalmazzák:

  • Matplotlib – Népszerű adatvizualizációs könyvtár. Ez egy alacsony szintű könyvtár, amely több testreszabási lehetőséget kínál, de bonyolult.
  • Seaborn – Ez a vizualizációs könyvtár a Matplotlibre épül, és leegyszerűsíti annak egyes funkcióit, miközben szebb vizualizációkat biztosít.
  • Plotly – Ez egy vizualizációs könyvtár, amely könnyen használható API-t biztosít a hőtérképek Pythonban történő létrehozásához.
  Hogyan készítsünk egy számítógépet, hogy kitöltse a TV képernyőjét, ha HDMI-n keresztül csatlakozik

A következő részben megvizsgáljuk, hogyan lehet hőtérképeket létrehozni ezen könyvtárak felhasználásával.

Hogyan készítsünk hőtérképet?

Ebben a részben azt fogom megvizsgálni, hogyan lehet hőtérképeket létrehozni a Matplotlib, a Seaborn és a Plotly használatával. A kódoláshoz használni fogom Google Colab. Ez egy ingyenesen használható Python-jegyzetfüzet, amely a kód futtatásához a Google infrastruktúrát használja. Nem igényel beállítást, így követésére is használhatja. Kezdésként először foglalkozunk a Matplotlib-bal.

Matplotlib

Kezdésként a Matplotlib könyvtár importálásával kezdjük.

import matplotlib.pyplot as plt

Szükségünk lesz a NumPy-ra is egy véletlenszerű adatkészlet létrehozásához.

import numpy as np

Az adatkészlet létrehozásához a következő kódot adjuk hozzá:

# 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))

Az adatok ábrázolásához az imshow metódust használjuk. Adatokat adunk át érvként. Többet tehetünk, ha további érveket adunk át, amelyekre később kitérünk.

plt.imshow(data)

Ha futtatja a cellát, látnia kell egy hőtérképet.

Bár ez nagyszerű, számos testreszabási lehetőség áll rendelkezésre. Kezdetben megváltoztathatja a képen használt színt az imshow-nak átadott cmap argumentum használatával. Például, ha szeretné megváltoztatni a hőtérkép által használt színt a kék különböző árnyalataira, akkor a következővel generálja a diagramot.

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

A cmap opciók teljes listája megtalálható itt. Egyébként a fentiek eredménye a következő lenne:

A hőtérkép hasznosabb lenne, ha lenne egy kulcs, amely elmagyarázza, mit ábrázolnak a színek. Ehhez adja hozzá a következő kódot:

plt.colorbar()

Ezek után egy ilyen ábrát kell kapnia:

A színes sáv hasznos, de bizonyos esetekben érdemes lehet megjegyzéseket fűzni a különböző értékekhez, hogy a néző pontosan lássa, mit ábrázol. Ehhez minden cellába szöveget kell írnia a plt.text() segítségével.

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",
      )

Az utolsó dolog, amit a hőtérképpel fogunk tenni, az az, hogy a tengelyeken lévő pipacímkéket helyezzük el. Az x tengelyhez a plt.xticks függvényt, az y tengelyhez pedig a plt.yticks függvényt fogjuk használni. Ezeket a módszereket ugyanúgy hívják; az egyetlen különbség az a tengely, amelyet az egyes módszerek érintenek.

  Bevezetés az SNMP-be kezdőknek

Az első argumentum a jelölések beszúrásához szükséges helyek listája. Ez indexek tömbjeként van ábrázolva. A következő argumentum a beillesztendő címkék tényleges listája. Íme egy példa arra, hogyan illesszünk be kullancsokat:

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)

És ez az! Így hozhat létre hőtérképet a Matplotlibben. A teljes kódmegoldást az alábbiakban részletezzük.

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)

A Matplotlib használata azonban nem a legegyszerűbb megoldás. Ahogy a továbbiakban látni fogjuk, más könyvtárak, például a Seaborn és a Matplotlib leegyszerűsítik a hőtérkép felépítésének folyamatát.

Tengeren született

Ebben a részben újra létrehozzuk az előző példát a Seaborn használatával. A Seaborn egy olyan könyvtár, amely a Matplotlibre épül. Absztrakciókat biztosít, amelyek megkönnyítik a munkát. A hőtérkép létrehozásához először importáljuk a használni kívánt könyvtárakat.

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sn

Azért importáltuk a Matplotlib-et, mert a Seaborn megköveteli. Ezután a NumPy-t is importálnunk kell egy véletlenszerű adatkészlet létrehozásához. Végül importálnunk kell a Seabornt.

Ezután a NumPy segítségével generáljuk az adatkészletet.

# 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))

Ezt követően elkészítjük a pipacímkék listáját.

# 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']

Végül az sn modul hőtérkép funkciójának meghívásával létrehozzuk a tényleges hőtérképet.

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

Amint látja, több érvet is átvittünk. Íme mindegyikhez egy magyarázat:

  • az adat az az adatkészlet, amelyet ábrázolni szeretnénk
  • A cmap az a színséma, amellyel a hőtérképet szeretnénk létrehozni
  • Az annot kimondja, hogy szeretnénk-e az adatpontokat a tényleges értékükkel annotálni
  • Az yticklabels azoknak a címkéknek a listája, amelyeket a függőleges tengely jelöléseihez szeretnénk
  • Az xticklabels a vízszintes tengelyek címkéinek listája.
  Hogyan használhatja a mélyreható védelmet adatai biztonsága érdekében

Végül a cselekményt a következő kóddal mutatjuk be:

plt.show()

Ez a következő hőtérképet generálja:

Cselekményesen

Plotly esetében a folyamat hasonló a Seabornhoz. Íme a kódvázlat a Plotly hőtérképének létrehozásához:

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")

Mint látható, a hőtérkép az utolsó sorban jön létre a px.imshow() függvény segítségével. Ez a függvény pozicionális argumentumként veszi fel az adatokat a ábrázoláshoz. Ezenkívül a kulcsszó argumentumot a következőképpen veszi:

  • A text_auto egy logikai érték, amely engedélyezi az annotációt, ha igaz értékre van állítva
  • Az x az x tengely jelöléseinek listája
  • y az y tengelyen lévő jelölőcímkék listája
  • color_continuous_scale meghatározza a grafikonhoz használt színsémát.

Amint látja, a Plotly egyszerűbb, mint a Seaborn és a Matplotlib. Ezenkívül a létrehozott grafikon interaktív más statikus képeket előállító könyvtárakhoz képest.

Íme a végeredmény képernyőképe:

Végső szavak

Ebben a cikkben bemutattuk, hogyan lehet hőtérképeket létrehozni Pythonban. Áttekintettük a főbb könyvtárakat – Matplotlib, Seaborn és Plotly. Azt is láttuk, hogy a Seaborn és a Plotly hogyan biztosít leegyszerűsített absztrakciókat a Matplotlib felett. A Heatmaps egyik kritikus felhasználási módja annak nyomon követése, hogy az emberek hogyan használják webhelyeit.

Ezután tekintse meg a hőtérkép-eszközöket, amelyek megmondják, hová kattintanak a felhasználók.