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.
Tartalomjegyzék
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.
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.
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.
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.