[Explained] Як створити теплову карту в Python

Візуалізація — це важливий спосіб осмислення даних і отримання інформативної та дієвої інформації. Гарне візуальне зображення дозволяє читачеві отримати базове уявлення про інформацію лише з першого погляду.

Популярною візуалізацією, яка використовується для перегляду даних, є теплова карта. У цій статті я поясню теплову карту та як її створити на Python за допомогою Matplotlib, Seaborn і Plotly.

Що таке теплова карта?

Джерело: seaborn.pydata.org

Теплова карта – це двовимірне зображення, що представляє дані у вигляді матриці або сітки точок. Відтінок кольорового графіка представляє кожну точку даних. Темні відтінки представляють вищі значення, ніж світлі відтінки.

Теплові карти спрощують визначення закономірностей, тенденцій і варіацій у даних. Вони надають узагальнену інформацію, яка дозволяє користувачам швидко побачити області високих або низьких значень, кластери чи викиди.

Де використовуються теплові карти?

Теплові карти допомагають показати, як значення змінюються в просторі. Випадки щоденного використання включають:

Погода

Найпопулярніша теплова карта, яку бачили більшість людей, — це буквальна теплова карта, яка показує, як температура змінюється в різних місцях.

Це приклад прогнозу погоди від Дейлі Експрес відображення очікуваних температур у вигляді теплової карти. Це полегшує візуалізацію, які місця будуть гарячими, холодними чи між ними.

Показ використання веб-сайту/додатка

Джерело: HotJar

Завдяки відстеженню рухів миші, клацань і шаблонів прокручування теплові карти допомагають визначити популярні або забуті ділянки веб-сторінки. Потім це можна використовувати для оптимізації інтерфейсу користувача та покращення взаємодії з користувачем.

Медична візуалізація

Джерело: researchgate.net

Теплові карти візуалізують зони високої або низької активності в тілі. Це може виявити аномалії та захворювання та оцінити прогресування або відповідь на лікування таких станів, як рак.

Бібліотеки для створення теплових карт у Python

Python є популярною мовою для аналізу та візуалізації даних. Це через його простий синтаксис і розгалужену екосистему. Є кілька бібліотек, які можна використовувати для створення теплових карт у Python. До них належать:

  • Matplotlib – популярна бібліотека візуалізації даних. Це бібліотека низького рівня, яка надає більше можливостей налаштування, але є складною.
  • Seaborn – ця бібліотека візуалізації створена на основі Matplotlib і спрощує деякі її функції, забезпечуючи кращі візуалізації.
  • Plotly – це бібліотека візуалізації, яка надає простий у використанні API для створення теплових карт на Python.
  Як розібрати текст

У наступному розділі ми розглянемо, як створити теплові карти за допомогою всіх цих бібліотек.

Як створити теплову карту?

У цьому розділі я розповім, як створити теплові карти за допомогою Matplotlib, Seaborn і Plotly. Для кодування я збираюся використовувати Google Colab. Це безкоштовний екземпляр блокнота Python, який використовує інфраструктуру Google для виконання вашого коду. Він не потребує налаштування, тому ви також можете використовувати його, щоб слідувати. Для початку ми розглянемо Matplotlib.

Matplotlib

Для початку ми починаємо з імпорту бібліотеки Matplotlib.

import matplotlib.pyplot as plt

Нам також знадобиться NumPy для створення випадкового набору даних.

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

Щоб побудувати дані, ми використовуємо метод imshow. Ми передаємо дані як аргумент. Ми можемо зробити більше, передаючи додаткові аргументи, які ми розглянемо пізніше.

plt.imshow(data)

Якщо ви запустите комірку, ви побачите теплову карту.

Хоча це чудово, вам доступно багато варіантів налаштування. Для початку ви можете змінити колір зображення, використовуючи аргумент cmap, який ви передаєте imshow. Наприклад, якщо ви бажаєте змінити колір, який використовує теплова карта, на інші відтінки синього, ви повинні створити діаграму за допомогою наступного.

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

Знайдено повний список параметрів cmap тут. У будь-якому випадку результатом вищесказаного буде:

Теплова карта була б кориснішою, якби існував ключ для пояснення того, що представляють кольори. Для цього додайте такий код:

plt.colorbar()

Після цього у вас повинна вийти фігура ось так:

Кольорова смуга є корисною, але в деяких випадках ви можете примітити різні значення, щоб глядач міг бачити саме те, що представлено. Для цього ви повинні написати текст у кожній клітинці за допомогою 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",
      )

Останнє, що ми зробимо з тепловою картою, це встановимо галочки на осях. Ми будемо використовувати функцію plt.xticks для осі x і функцію plt.yticks для осі y. Ці методи називаються однаково; єдина відмінність полягає в осі, на яку впливає кожен метод.

  9 найкращих курсів машинного навчання для прискорення вашої кар’єри [2023]

Перший аргумент — список місць для вставки галочок. Це представлено у вигляді масиву індексів. Наступний аргумент — це фактичний список міток, які буде вставлено. Ось приклад того, як ми будемо вставляти галочки:

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)

І це все! Таким чином ви створюєте теплову карту в Matplotlib. Повне кодове рішення описано нижче.

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)

Однак використання Matplotlib не є найпростішим рішенням. Як ми побачимо далі, інші бібліотеки, такі як Seaborn і Matplotlib, спрощують процес створення теплової карти.

Seaborn

У цьому розділі ми відтворимо попередній приклад за допомогою Seaborn. Seaborn — це бібліотека, яка побудована на основі Matplotlib. Він надає абстракції, які полегшують роботу. Щоб створити теплову карту, ми починаємо з імпорту бібліотек, які збираємося використовувати.

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

Ми імпортували Matplotlib, тому що це потрібно Seaborn. Далі нам також потрібно імпортувати NumPy, щоб створити випадковий набір даних. Нарешті, ми повинні імпортувати Seaborn.

Далі ми генеруємо набір даних за допомогою 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))

Після цього ми створюємо наші списки позначок галочок.

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

Потім, нарешті, ми створюємо фактичну карту тепла, викликаючи функцію карти тепла модуля sn.

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

Як бачите, ми передали кілька аргументів. Ось пояснення для кожного:

  • data — це набір даних, який ми хочемо побудувати
  • cmap — це колірна схема, за допомогою якої ми хочемо створити теплову карту
  • annot вказує, чи хочемо ми анотувати точки даних їх фактичним значенням
  • yticklabels — це список міток, які нам потрібні для позначок вертикальної осі
  • xticklabels — список міток для позначок горизонтальної осі.
  Як дивитися іспанські фільми на Kodi

Нарешті, ми показуємо сюжет за допомогою коду:

plt.show()

Це створить таку теплову карту:

Сюжетно

Для Plotly процес схожий на Seaborn. Ось схема коду для створення теплової карти в 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")

Як бачите, теплова карта генерується в останньому рядку за допомогою функції px.imshow(). Ця функція приймає дані для побудови як позиційний аргумент. Крім того, він приймає наступний аргумент ключового слова:

  • text_auto — це логічне значення, яке вмикає анотацію, якщо встановлено значення true
  • x — список міток відміток осі x
  • y — список міток відміток на осі y
  • color_continuous_scale визначає колірну схему, яка використовується для графіка.

Як бачите, Plotly простіше, ніж Seaborn і Matplotlib. Крім того, створений графік є інтерактивним порівняно з іншими бібліотеками, які створюють статичні зображення.

Ось скріншот остаточного результату:

Заключні слова

У цій статті ми розповіли, як створити теплові карти в Python. Ми розглянули основні бібліотеки – Matplotlib, Seaborn і Plotly. Ми також побачили, як Seaborn і Plotly забезпечують спрощені абстракції над Matplotlib. Одним з найважливіших способів використання теплових карт є відстеження того, як люди використовують ваші веб-сайти.

Далі ознайомтеся з інструментами теплової карти, які повідомляють, де натискають користувачі.