[Explained] Cum se creează o hartă termică în Python

Vizualizarea este o modalitate importantă de a da sens datelor și de a atrage perspective informative și acționabile. O imagine bună permite cititorului să obțină o idee de bază a informațiilor cu o singură privire.

O vizualizare populară folosită pentru vizualizarea datelor este o hartă termică. În acest articol, voi explica o hartă termică și cum să creez una în Python folosind Matplotlib, Seaborn și Plotly.

Ce este o hartă termică?

Sursă: seaborn.pydata.org

O hartă termică este o imagine bidimensională care reprezintă datele ca o matrice sau o grilă de puncte. O nuanță a unui diagramă de culoare reprezintă fiecare punct de date. Nuanțele mai închise reprezintă valori mai mari decât nuanțele mai deschise.

Hărțile termice facilitează identificarea modelelor, tendințelor și variațiilor datelor. Acestea oferă informații rezumate care le permit utilizatorilor să vadă rapid zonele cu valori mari sau scăzute, clustere sau valori aberante.

Unde sunt folosite hărțile termice?

Hărțile termice sunt utile pentru a arăta cum variază valorile în spațiu. Cazurile de utilizare zilnică includ:

Vreme

Cea mai populară hartă termică pe care majoritatea oamenilor au văzut-o este o hartă termică literală – care arată modul în care temperatura variază în diferite locuri.

Acesta este un exemplu de prognoză meteo de la Daily Express arătând temperaturile așteptate sub formă de hartă termică. Acest lucru face mai ușor să vizualizați ce locuri vor fi calde, reci sau între ele.

Se afișează utilizarea site-ului/aplicației

Sursă: HotJar

Prin urmărirea mișcărilor mouse-ului, clicurilor și modelelor de defilare, hărțile termice ajută la identificarea zonelor populare sau neglijate ale unei pagini web. Acest lucru poate fi apoi folosit pentru a optimiza interfețele utilizator și pentru a îmbunătăți experiența utilizatorului.

Imagistica medicala

Sursă: researchgate.net

Hărțile termice vizualizează zonele cu activitate ridicată sau scăzută din corp. Acest lucru poate identifica anomalii și boli și poate evalua progresia sau răspunsul la tratament în condiții precum cancerul.

Biblioteci pentru crearea de hărți termice în Python

Python este un limbaj popular pentru analiza și vizualizarea datelor. Acest lucru se datorează sintaxei sale simple și ecosistemului extins. Există mai multe biblioteci pe care le puteți folosi pentru a crea hărți termice în Python. Acestea includ:

  • Matplotlib – O bibliotecă populară de vizualizare a datelor. Este o bibliotecă de nivel scăzut care oferă mai multe opțiuni de personalizare, dar este complicată.
  • Seaborn – Această bibliotecă de vizualizare este construită pe Matplotlib și simplifică unele dintre funcțiile sale, oferind în același timp vizualizări mai bune.
  • Plotly – Aceasta este o bibliotecă de vizualizare care oferă un API ușor de utilizat pentru crearea de hărți termice în Python.
  Cum funcționează testele de viteză pe internet? (și cât de precise sunt?)

În secțiunea următoare, vom explora cum să creați hărți termice folosind toate aceste biblioteci.

Cum se generează o hartă termică?

În această secțiune, voi explora cum să creez hărți termice folosind Matplotlib, Seaborn și Plotly. Pentru a codifica, voi folosi Google Colab. Este o instanță gratuită a unui blocnotes Python care utilizează Infrastructura Google pentru a vă rula codul. Nu necesită configurare, așa că îl puteți folosi și pentru a urmări. Pentru început, vom acoperi mai întâi Matplotlib.

Matplotlib

Pentru început, începem prin a importa biblioteca Matplotlib.

import matplotlib.pyplot as plt

De asemenea, vom avea nevoie de NumPy pentru a genera un set de date aleatoriu.

import numpy as np

Pentru a genera setul de date, vom adăuga următorul cod:

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

Pentru a reprezenta graficul datelor, folosim metoda imshow. Transmitem datele ca argument. Putem face mai mult prin transmiterea unor argumente suplimentare pe care le vom aborda mai târziu.

plt.imshow(data)

Dacă rulați celula, ar trebui să vedeți o hartă termică.

Deși acest lucru este grozav, există multe opțiuni de personalizare disponibile pentru dvs. Pentru început, puteți schimba culoarea folosită în imagine folosind argumentul cmap pe care îl transmiteți imshow. De exemplu, dacă doriți să schimbați culoarea folosită de harta termică în diferite nuanțe de albastru, veți genera graficul cu următoarele.

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

Lista completă a opțiunilor cmap este găsită Aici. Oricum, rezultatul celor de mai sus ar fi:

O hartă termică ar fi mai utilă dacă ar exista o cheie care să explice ce reprezintă culorile. Pentru a face acest lucru, adăugați următorul cod:

plt.colorbar()

După aceasta, ar trebui să obțineți o cifră care arată astfel:

O bară de culoare este utilă, dar în unele cazuri, este posibil să doriți să adnotați diferitele valori, astfel încât vizualizatorul să poată vedea exact ceea ce este reprezentat. Pentru a face acest lucru, veți scrie text în fiecare dintre celule folosind 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",
      )

Ultimul lucru pe care îl vom face cu harta termică este să setăm etichetele căpuțelor pe axe. Vom folosi funcția plt.xticks pentru axa x și funcția plt.yticks pentru axa y. Aceste metode sunt numite în același mod; singura diferență este axa pe care fiecare metodă o afectează.

  Cum îmbunătățește SASE securitatea datelor? De ce ar trebui să o adopte organizațiile?

Primul argument este lista de locuri pentru a introduce căpușe. Acesta este reprezentat ca o serie de indici. Următorul argument este lista reală de etichete care ar fi inserate. Iată un exemplu despre cum am insera căpușe:

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)

Si asta e! Așa creați o hartă termică în Matplotlib. Soluția completă a codului este detaliată mai jos.

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)

Cu toate acestea, utilizarea Matplotlib nu este cea mai ușoară soluție. După cum vom vedea în continuare, alte biblioteci, cum ar fi Seaborn și Matplotlib, simplifică procesul de construire a unei hărți termice.

Seaborn

În această secțiune, vom recrea exemplul anterior folosind Seaborn. Seaborn este o bibliotecă care se bazează pe Matplotlib. Oferă abstracții cu care este mai ușor de lucrat. Pentru a crea o hartă termică, începem prin a importa bibliotecile pe care urmează să le folosim.

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

Am importat Matplotlib pentru că Seaborn o cere. În continuare, trebuie să importăm NumPy pentru a genera un set de date aleatoriu. În cele din urmă, trebuie să importăm Seaborn.

În continuare, generăm setul de date folosind 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))

După ce facem acest lucru, creăm listele noastre de etichete de căpușe.

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

Apoi, în cele din urmă, creăm harta termică actuală apelând funcția de hărtură a modulului sn.

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

După cum puteți vedea, am dat mai multe argumente. Iată o explicație pentru fiecare:

  • data este setul de date pe care vrem să-l trasăm
  • cmap este schema de culori prin care dorim să fie creată harta termică
  • annot afirmă dacă dorim să adnotăm punctele de date cu valoarea lor reală
  • yticklabels este lista de etichete pe care le dorim pentru bifările axei verticale
  • xticklabels este lista de etichete pentru bifările pe axa orizontală.
  Cum să blochezi pe cineva fără ca ea să știe în Viber

În cele din urmă, arătăm diagrama folosind codul:

plt.show()

Aceasta va genera următoarea hartă termică:

Complot

Pentru Plotly, procesul este similar cu Seaborn. Iată schița codului pentru crearea unei hărți termice în 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")

După cum puteți vedea, harta termică este generată în ultima linie folosind funcția px.imshow(). Această funcție preia datele pentru a le reprezenta ca argument pozițional. În plus, este nevoie de argumentul cuvântului cheie după cum urmează:

  • text_auto este un boolean care activează adnotarea atunci când este setată la adevărat
  • x este o listă de etichete de bifă a axei x
  • y este o listă de etichete de bifă pe axa y
  • color_continuous_scale determină schema de culori utilizată pentru grafic.

După cum puteți vedea, Plotly este mai simplu decât Seaborn și Matplotlib. În plus, graficul generat este interactiv în comparație cu alte biblioteci care produc imagini statice.

Iată captura de ecran cu rezultatul final:

Cuvinte finale

În acest articol, am abordat cum să creați hărți termice în Python. Am acoperit principalele biblioteci – Matplotlib, Seaborn și Plotly. Am văzut, de asemenea, cum Seaborn și Plotly oferă abstracții simplificate peste Matplotlib. O utilizare critică a Heatmaps este urmărirea modului în care oamenii vă folosesc site-urile web.

Apoi, consultați instrumentele de hărți termice care vă spun unde dau clic utilizatorii.