[Explained] Како направити топлотну мапу у Питхон-у

Визуелизација је важан начин да се добије смисао у подацима и да се извуку информативни и практични увиди. Добар визуелни приказ омогућава читаоцу да добије основни осећај информација само једним погледом.

Популарна визуелизација која се користи за преглед података је топлотна мапа. У овом чланку ћу објаснити топлотну мапу и како је направити у Питхон-у користећи Матплотлиб, Сеаборн и Плотли.

Шта је топлотна мапа?

Извор: сеаборн.пидата.орг

Топлотна мапа је 2-димензионална слика која представља податке као матрицу или мрежу тачака. Нијанса дијаграма боја представља сваку тачку података. Тамније нијансе представљају веће вредности од светлијих нијанси.

Топлотне мапе олакшавају идентификацију образаца, трендова и варијација у подацима. Они пружају сажете информације које корисницима омогућавају да брзо виде области високих или ниских вредности, кластере или изузетке.

Где се користе топлотне карте?

Топлотне мапе су корисне за показивање како вредности варирају у простору. Случајеви свакодневне употребе укључују:

Време

Најпопуларнија топлотна мапа коју је већина људи видела је буквална топлотна мапа – која показује како температура варира на различитим местима.

Ово је пример временске прогнозе из Дејли експрес приказујући очекиване температуре као топлотну мапу. Ово олакшава визуализацију која ће места бити врућа, хладна или између.

Приказ употребе веб-сајта/апликације

Извор: ХотЈар

Праћењем кретања миша, кликова и шаблона померања, топлотне мапе помажу да се идентификују популарна или занемарена подручја веб странице. Ово се затим може користити за оптимизацију корисничког интерфејса и побољшање корисничког искуства.

Медицал Имагинг

Извор: ресеарцхгате.нет

Топлотне мапе визуализују подручја високе или ниске активности у телу. Ово може да идентификује аномалије и болести и процени прогресију или одговор на лечење у стањима као што је рак.

Библиотеке за креирање топлотних мапа у Питхон-у

Питхон је популаран језик за анализу и визуелизацију података. То је због његове једноставне синтаксе и опсежног екосистема. Постоји више библиотека које можете користити за креирање топлотних мапа у Питхон-у. Ови укључују:

  • Матплотлиб – Популарна библиотека за визуелизацију података. То је библиотека ниског нивоа која пружа више опција прилагођавања, али је компликована.
  • Сеаборн – Ова библиотека визуелизације је изграђена на врху Матплотлиб-а и поједностављује неке од његових функција истовремено пружајући визуелизације бољег изгледа.
  • Плотли – Ово је библиотека визуелизације која пружа АПИ једноставан за коришћење за креирање топлотних мапа у Питхон-у.
  Фирмвер наспрам софтвера: сличности и разлике

У следећем одељку ћемо истражити како да креирате топлотне мапе користећи све ове библиотеке.

Како генерисати топлотну карту?

У овом одељку ћу истражити како да креирам топлотне мапе користећи Матплотлиб, Сеаборн и Плотли. За кодирање, користићу Гоогле Цолаб. То је бесплатна инстанца Питхон бележнице која користи Гоогле инфраструктуру за покретање вашег кода. Не захтева подешавање, тако да га можете користити и за праћење. За почетак, прво ћемо покрити Матплотлиб.

Матплотлиб

За почетак, почињемо са увозом Матплотлиб библиотеке.

import matplotlib.pyplot as plt

Такође ће нам требати НумПи да генеришемо насумични скуп података.

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

За исцртавање података користимо метод имсхов. Продајемо податке као аргумент. Можемо учинити више тако што ћемо пренети додатне аргументе о којима ћемо касније.

plt.imshow(data)

Ако покренете ћелију, требало би да видите топлотну мапу.

Иако је ово одлично, на располагању су вам многе опције прилагођавања. За почетак, можете променити боју која се користи на слици користећи аргумент цмап који проследите у имсхов. На пример, ако желите да промените боју коју користи топлотна мапа у различите нијансе плаве, генерисали бисте графикон са следећим.

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

Пронађена је комплетна листа опција цмап овде. У сваком случају, резултат горе наведеног би био:

Топлотна мапа би била кориснија када би постојао кључ који објашњава шта боје представљају. Да бисте то урадили, додајте следећи код:

plt.colorbar()

Након овога, требало би да добијете цифру која изгледа овако:

Трака у боји је корисна, али у неким случајевима можда ћете желети да означите различите вредности како би гледалац могао да види тачно шта је представљено. Да бисте то урадили, написали бисте текст у сваку од ћелија користећи плт.тект().

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

Последња ствар коју ћемо урадити са топлотном мапом је да поставимо ознаке на осама. Користићемо плт.ктицкс функцију за к-осу и плт.итицкс функцију за и-осу. Ове методе се називају на исти начин; једина разлика је осу на коју свака метода утиче.

  Како променити корисничко име за Кик Дисплаи

Први аргумент је листа места за уметање квачица. Ово је представљено као низ индекса. Следећи аргумент је стварна листа ознака које би биле уметнуте. Ево примера како бисмо убацили квачице:

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)

И то је то! Тако креирате топлотну мапу у Матплотлибу. Комплетно решење кода је детаљно описано у наставку.

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)

Међутим, коришћење Матплотлиб-а није најлакше решење. Као што ћемо даље видети, друге библиотеке, као што су Сеаборн и Матплотлиб, поједностављују процес прављења топлотне мапе.

Сеаборн

У овом одељку ћемо поново направити претходни пример користећи Сеаборн. Сеаборн је библиотека која се гради на врху Матплотлиба. Пружа апстракције које олакшавају рад. Да бисмо направили топлотну мапу, почињемо са увозом библиотека које ћемо користити.

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

Увезли смо Матплотлиб јер то захтева Сеаборн. Затим, такође морамо да увеземо НумПи да бисмо генерисали насумични скуп података. На крају, морамо да увеземо Сеаборн.

Затим генеришемо скуп података користећи НумПи.

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

Затим, на крају, креирамо стварну топлотну мапу позивањем функције топлотне карте сн модула.

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

Као што видите, изнели смо неколико аргумената. Ево објашњења за сваки:

  • дата је скуп података који желимо да нацртамо
  • цмап је шема боја помоћу које желимо да се топлотна мапа креира
  • аннот наводи да ли желимо да означимо тачке података њиховом стварном вредношћу
  • итицклабелс је листа ознака које желимо за квачице вертикалне осе
  • ктицклабелс је листа ознака за квачице хоризонталне осе.
  Како уметнути паметне чипове у Гоогле табеле

На крају, приказујемо заплет користећи код:

plt.show()

Ово ће генерисати следећу топлотну мапу:

Плотли

За Плотли, процес је сличан Сеаборну. Ево нацрта кода за креирање топлотне мапе у Плотлију:

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

Као што видите, топлотна мапа се генерише у последњем реду помоћу функције пк.имсхов(). Ова функција узима податке за исцртавање као позициони аргумент. Поред тога, узима аргумент кључне речи на следећи начин:

  • тект_ауто је боолеан који омогућава напомену када је постављено на труе
  • к је листа ознака квачица на к осе
  • и је листа ознака на и оси
  • цолор_цонтинуоус_сцале одређује шему боја која се користи за графикон.

Као што видите, Плотли је једноставнији од Сеаборна и Матплотлиба. Поред тога, генерисани графикон је интерактиван у поређењу са другим библиотекама које производе статичне слике.

Ево снимка екрана коначног резултата:

Завршне речи

У овом чланку смо покрили како да направите топлотне мапе у Питхон-у. Покрили смо главне библиотеке – Матплотлиб, Сеаборн и Плотли. Такође смо видели како Сеаборн и Плотли пружају поједностављене апстракције преко Матплотлиба. Једна критична употреба Хеатмапс-а је праћење начина на који људи користе ваше веб странице.

Затим погледајте алатке за топлотну мапу које вам говоре где корисници кликну.