Создание 2D heatmap с помощью Matplotlib и Numpy

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для создания двумерной тепловой карты можно воспользоваться функцией imshow из библиотеки matplotlib:

Python
Скопировать код
import matplotlib.pyplot as plt
import numpy as np

data = np.random.rand(10, 10)

plt.imshow(data, cmap='viridis')
plt.colorbar()
plt.show()

Здесь мы подставляем вместо массива np.random.rand(10, 10) ваш набор данных.

Кинга Идем в IT: пошаговый план для смены профессии

Настройка: это важно

Прежде чем переходить к настройкам визуализации, убедимся, что имеются все необходимые библиотеки:

Python
Скопировать код
import matplotlib.pyplot as plt
import numpy as np

Используйте следующий набор инструментов для детальной настройки тепловой карты:

  • Выбор цветовой палитры: Атрибут cmap позволяет определить цветовую гамму.
  • Методы интерполяции: С использованием параметра interpolation можно адаптировать отображение пикселей.
  • Нормализация данных: Отмасштабируйте данные, чтобы обеспечить корректный диапазон значений.
  • Работа с нерегулярными данными: Данные с неравномерными интервалами можно обрабатывать через pcolor или pcolormesh.
  • Контуры: Это схемы, особенно полезные при визуализации непрерывных данных.

Практическое применение

Допустим, мы строим тепловую карту из данных, собранных в CSV-файле:

Python
Скопировать код
import pandas as pd

df = pd.read_csv('data.csv')
data = df.values

plt.imshow(data, cmap='hot')
plt.colorbar()
plt.show()

Для обработки неравномерных данных используйте интерполяцию данных на равномерную сетку:

Python
Скопировать код
from scipy.interpolate import griddata

grid_x, grid_y = np.mgrid[min_x:max_x:100j, min_y:max_y:100j]
grid_z = griddata(points, values, (grid_x, grid_y), method='cubic')

plt.imshow(grid_z.T, cmap='hot', origin='lower')
plt.colorbar()
plt.show()

Визуализация, которая останется в памяти

В следующем примере мы визуализируем распределение тепла:

Python
Скопировать код
import numpy as np
import matplotlib.pyplot as plt

heat_distribution = np.random.rand(10, 10)

plt.imshow(heat_distribution, cmap='hot', interpolation='nearest')
plt.colorbar()
plt.show()

Цветовое насыщение здесь отражает значения ваших данных, создавая красочную визуальную картину.

Seaborn: стиль и функциональность

Если вам нужно создать стильную и интуитивную тепловую карту, выберите библиотеку Seaborn:

Python
Скопировать код
import seaborn as sns

ax = sns.heatmap(data, vmax=1.0, square=True, cmap='coolwarm')
plt.show()

В этой библиотеке доступен широкий выбор параметров для улучшения визуализации:

  • sns.axes_style(): позволяет настроить внешний вид осей.
  • Подсветка определенных областей: С помощью этого параметра можно сделать акцент на ключевых данных.
  • Аннотации: они пригодятся для добавления дополнительной информации.

Ожидаемые сложности

В процессе создания тепловых карт вы можете столкнуться с рядом проблем:

  • Искажение пропорций: Используйте параметр aspect, чтобы избежать этого.
  • Выбор ошибочного цветового оформления: Важно внимательно выбирать параметры нормализации данных и cmap.
  • Обработка больших объемов данных: Не забывайте о важности оптимального хранения данных.

Полезные материалы

  1. seaborn.heatmap — документация Seaborn 0.13.2 — Официальное руководство по Seaborn.
  2. Creating annotated heatmaps — документация Matplotlib 3.8.2 — Инструкция по созданию аннотированных тепловых карт.
  3. Heatmaps in Python — Информация о создании динамических и интерактивных тепловых карт.
  4. numpy.array — документация NumPy v1.26 — Детали работы с массивами NumPy.
  5. pandas.DataFrame — документация pandas 2.2.0 — Описание структуры данных DataFrame.
  6. The Python Tutorial — документация Python 3.12.2 — Базовый учебник по Python.
  7. StackOverflow: How to plot a heatmap — Обсуждение создания тепловых карт на примерах из практики.