Тепловые карты незаменимы для визуализации данных в двумерной сетке, где интенсивность цвета представляет величину каждого значения. Matplotlib, мощная библиотека визуализации данных Python, предлагает несколько способов создания убедительных тепловых карт. В этой статье рассматриваются три популярных метода: использование imshow()
, использование библиотеки Seaborn и использование pcolormesh()
. Мы рассмотрим каждый метод с понятными примерами и объяснениями.
Содержание
imshow()
: Простой подходheatmap()
из Seaborn: Расширенная функциональностьpcolormesh()
: Для нерегулярных данных и точного контроля
imshow()
: Простой подход
Функция imshow()
из Matplotlib предоставляет простой способ генерации тепловых карт. Она принимает в качестве входных данных 2D массив, сопоставляя значения с цветами с помощью выбранной цветовой карты.
import matplotlib.pyplot as plt
import numpy as np
# Пример данных
data = np.random.rand(10, 10)
# Создание тепловой карты
plt.imshow(data, cmap='viridis')
# Добавление цветовой шкалы
plt.colorbar(label='Значение')
# Добавление подписей и заголовка
plt.xlabel('Ось X')
plt.ylabel('Ось Y')
plt.title('Двумерная тепловая карта с помощью imshow()')
# Показать график
plt.show()
Этот код создает тепловую карту, где интенсивность цвета ячейки отражает соответствующее значение в массиве data
. Аргумент cmap
выбирает цветовую карту (например, ‘plasma’, ‘magma’, ‘inferno’, ‘cividis’). colorbar()
добавляет легенду, сопоставляющую цвета со значениями.
heatmap()
из Seaborn: Расширенная функциональность
Seaborn, основанный на Matplotlib, предлагает более высокоуровневый интерфейс для создания статистически содержательных и визуально привлекательных графиков, включая тепловые карты. Его функция heatmap()
упрощает процесс и добавляет полезные функции.
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
# Пример данных
data = np.random.rand(10, 10)
# Создание тепловой карты
sns.heatmap(data, annot=True, cmap='coolwarm', fmt=".2f")
# Добавление заголовка
plt.title('Двумерная тепловая карта с помощью Seaborn')
# Показать график
plt.show()
Этот пример Seaborn генерирует похожую тепловую карту, но с annot=True
, отображающим числовые значения внутри каждой ячейки, что повышает читаемость. fmt
управляет форматированием аннотаций.
pcolormesh()
: Для нерегулярных данных и точного контроля
pcolormesh()
из Matplotlib идеально подходит для тепловых карт с нерегулярно расположенными данными или когда требуется точный контроль над границами ячеек.
import matplotlib.pyplot as plt
import numpy as np
# Пример данных (использование meshgrid для демонстрации)
x = np.arange(0, 10, 1)
y = np.arange(0, 10, 1)
X, Y = np.meshgrid(x, y)
data = np.sin(X) * np.cos(Y)
# Создание тепловой карты
plt.pcolormesh(X, Y, data, cmap='RdBu')
# Добавление цветовой шкалы
plt.colorbar(label='Значение')
# Добавление подписей и заголовка
plt.xlabel('Ось X')
plt.ylabel('Ось Y')
plt.title('Двумерная тепловая карта с помощью pcolormesh()')
# Показать график
plt.show()
В этом примере используется meshgrid
для создания координатных сеток x и y, определяющих границы ячеек для pcolormesh()
. Это предлагает большую гибкость, чем imshow()
. Цветовая карта RdBu
является расходящейся схемой, подходящей для данных как с положительными, так и с отрицательными значениями. Не забудьте установить необходимые библиотеки, используя pip install matplotlib seaborn
.