Как создать тепловую карту в Python с использованием Matplotlib?

Что такое тепловая карта и для чего она используется?

Тепловая карта – это графическое представление данных, в котором значения представлены в виде цветов. Каждый цвет соответствует определенному диапазону значений, что позволяет визуально оценить распределение и взаимосвязи данных. Тепловые карты широко используются для анализа больших объемов данных, выявления закономерностей и трендов. Например, в интернет-маркетинге они могут применяться для визуализации эффективности различных рекламных каналов, а в веб-разработке — для отображения областей пользовательского интерфейса, с которыми пользователи взаимодействуют наиболее активно (карты кликов).

Краткий обзор библиотеки Matplotlib и её модуля pyplot

Matplotlib – это мощная библиотека для создания графиков и визуализаций в Python. Она предоставляет широкий набор инструментов для построения различных типов графиков, от простых диаграмм до сложных трехмерных визуализаций. Модуль pyplot является основным интерфейсом для работы с Matplotlib. Он предоставляет функции для создания графиков, настройки их внешнего вида и отображения на экране.

Установка и импорт необходимых библиотек (Matplotlib, NumPy)

Перед началом работы с Matplotlib необходимо установить её. Это можно сделать с помощью pip:

pip install matplotlib numpy

После установки необходимо импортировать библиотеки в ваш Python-скрипт:

import matplotlib.pyplot as plt
import numpy as np

Создание базовой тепловой карты с использованием Matplotlib

Подготовка данных для тепловой карты (NumPy array)

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

import numpy as np

def generate_data(rows: int, cols: int) -> np.ndarray:
  """Generates a NumPy array with random data.

  Args:
      rows: Number of rows in the array.
      cols: Number of columns in the array.

  Returns:
      A NumPy array containing random data.
  """
  return np.random.rand(rows, cols)

data: np.ndarray = generate_data(10, 10)

Использование функции imshow() для отображения тепловой карты

Функция imshow() из модуля pyplot используется для отображения двумерных массивов в виде изображений. Каждому значению массива соответствует определенный цвет.

import matplotlib.pyplot as plt
import numpy as np

def generate_heatmap(data: np.ndarray, title: str = "Heatmap"): # type: ignore
  """Generates and displays a heatmap using Matplotlib.

  Args:
      data: The NumPy array containing the data to visualize.
      title: The title of the heatmap.
  """
  plt.imshow(data, cmap='viridis')
  plt.title(title)
  plt.colorbar()
  plt.show()

data: np.ndarray = np.random.rand(10, 10)
generate_heatmap(data, "Basic Heatmap")

Настройка цветовой схемы (colormap) тепловой карты

Параметр cmap функции imshow() позволяет выбрать цветовую схему для тепловой карты. Matplotlib предоставляет множество предустановленных цветовых схем, например, 'viridis', 'plasma', 'magma', 'cividis', 'Greens', 'Reds', 'Blues'. Выбор цветовой схемы зависит от типа данных и цели визуализации.

Добавление цветовой шкалы (colorbar) для интерпретации значений

Функция colorbar() добавляет к тепловой карте цветовую шкалу, которая показывает соответствие между цветами и значениями. Это позволяет легко интерпретировать значения, представленные на тепловой карте.

Настройка и улучшение внешнего вида тепловой карты

Изменение размера и пропорций тепловой карты

Размер и пропорции тепловой карты можно изменить с помощью функций figure() и subplots():

import matplotlib.pyplot as plt
import numpy as np

def generate_custom_heatmap(data: np.ndarray, figsize: tuple[int, int] = (8, 6)) -> None:
  """Generates a heatmap with custom figure size.

  Args:
      data: The NumPy array containing the data to visualize.
      figsize: The size of the figure (width, height) in inches.
  """
  fig, ax = plt.subplots(figsize=figsize)
  im = ax.imshow(data)
  plt.colorbar(im)
  plt.show()

data: np.ndarray = np.random.rand(15, 15)
generate_custom_heatmap(data, (10, 8))
Реклама

Добавление заголовка и меток осей

Для добавления заголовка и меток осей используются функции title(), xlabel() и ylabel():

import matplotlib.pyplot as plt
import numpy as np

def generate_labeled_heatmap(data: np.ndarray, title: str, xlabel: str, ylabel: str) -> None:
  """Generates a heatmap with custom labels and title.

  Args:
      data: The NumPy array containing the data to visualize.
      title: The title of the heatmap.
      xlabel: The label for the x-axis.
      ylabel: The label for the y-axis.
  """
  fig, ax = plt.subplots()
  im = ax.imshow(data)
  ax.set_title(title)
  ax.set_xlabel(xlabel)
  ax.set_ylabel(ylabel)
  plt.colorbar(im)
  plt.show()

data: np.ndarray = np.random.rand(10, 10)
generate_labeled_heatmap(data, "Sales Data", "Week", "Product")

Настройка отображения значений на осях (ticks и labels)

Функции xticks() и yticks() позволяют настроить отображение значений на осях. Можно изменить количество делений, их положение и подписи.

Изменение шрифта и размера текста

Параметры fontsize и fontweight функций title(), xlabel(), ylabel() и tick_params() позволяют изменить шрифт и размер текста.

Продвинутые техники создания тепловых карт

Использование различных цветовых схем (cmap) Matplotlib

Matplotlib предлагает множество цветовых схем, подходящих для разных типов данных. Некоторые популярные схемы включают ‘viridis’, ‘magma’, ‘coolwarm’, ‘seismic’ и другие. Выбор подходящей цветовой схемы важен для эффективной визуализации данных.

Центрирование цветовой шкалы (для отображения положительных и отрицательных значений)

Для отображения положительных и отрицательных значений можно центрировать цветовую шкалу вокруг нуля. Это позволяет четко выделить области с положительными и отрицательными значениями. Для этого можно использовать параметр vmax и vmin у imshow, чтобы зафиксировать границы цветовой шкалы.

Добавление аннотаций (текстовых подписей) к ячейкам тепловой карты

Аннотации позволяют добавить текстовые подписи к каждой ячейке тепловой карты. Это полезно для отображения конкретных значений или дополнительной информации.

import matplotlib.pyplot as plt
import numpy as np

def generate_annotated_heatmap(data: np.ndarray) -> None:
    """Generates a heatmap with annotations.

    Args:
        data: The NumPy array containing the data to visualize.
    """
    fig, ax = plt.subplots()
    im = ax.imshow(data)

    # Show all ticks and label them with the array index.
    ax.set_xticks(np.arange(data.shape[1]))
    ax.set_yticks(np.arange(data.shape[0]))

    # Loop over data dimensions and create text annotations.
    for i in range(data.shape[0]):
        for j in range(data.shape[1]):
            text = ax.text(j, i, data[i, j].round(2), # type: ignore
                           ha="center", va="center", color="w")

    ax.set_title("Heatmap with Annotations")
    fig.tight_layout()
    plt.colorbar(im)
    plt.show()

data: np.ndarray = np.random.rand(5, 5)
generate_annotated_heatmap(data)

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

Маски позволяют выделить определенные области на тепловой карте, например, для отображения только значимых значений или исключения определенных областей из анализа. Это делается с помощью NumPy Masked Arrays.

Примеры использования тепловых карт в различных областях

Визуализация матрицы корреляции

Тепловые карты идеально подходят для визуализации матрицы корреляции, которая показывает взаимосвязь между различными переменными. Чем ярче цвет, тем сильнее корреляция.

Анализ данных о посещаемости веб-сайта

Тепловые карты могут использоваться для анализа данных о посещаемости веб-сайта, например, для отображения количества посещений различных страниц в разное время суток. Это позволяет выявить пиковые периоды посещаемости и оптимизировать контент.

Отображение данных о температуре

Тепловые карты широко используются для отображения данных о температуре, например, для визуализации изменений температуры в течение дня или года. Это позволяет легко выявить температурные аномалии и тренды.


Добавить комментарий