В этом уроке мы рассмотрим, как создавать тепловые карты, такие как эта, с помощью Pandas и matplotlib.pyplot:

Что такое matplotlib.pyplot?

matplotlib.pyplot — это подмодуль Matplotlib, популярной библиотеки построения графиков, использующей Python.

Подмодуль pyplot предназначен для интерактивных графиков и построения графиков.

Создание тепловых карт с помощью функции imshow:

imshow() можно использовать для создания тепловых карт. Давайте рассмотрим базовый пример того, как это сделать сейчас:

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

import numpy as np
import matplotlib
import matplotlib as mpl
import matplotlib.pyplot as plt

nhl_teams = ["Bruins", "Maple Leafs", "Lightning", "Panthers",
              "Sabres", "Senators", "Red Wings"]
nhl_team_stats = ["2022", "2021", "2020", "2019", "2018", "2017", "2016"]
nhl_games_won = np.array([[82, 63, 83, 92, 70, 45, 64],
                    [86, 48, 72, 67, 46, 42, 71],
                    [76, 89, 45, 43, 51, 38, 53],
                    [54, 56, 78, 76, 72, 80, 65],
                    [67, 49, 91, 56, 68, 40, 87],
                    [45, 70, 53, 86, 59, 63, 97],
                    [97, 67, 62, 90, 67, 78, 39]])

Затем мы создадим фигуру и подграфики, необходимые для отображения тепловой карты. Также функция imshow() будет использоваться для отображения массива nhl_games_won numpy в виде тепловой карты:

fig, ax = plt.subplots()
im = ax.imshow(nhl_games_won)

Далее мы добавляем галочки и метки для нашей тепловой карты:

ax.set_xticks(np.arange(len(nhl_teams)), labels=nhl_teams)
ax.set_yticks(np.arange(len(nhl_team_stats)), labels=nhl_team_stats)

Чтобы улучшить читаемость оси x, мы будем вращать метки деления оси x с помощью следующего кода:

plt.setp(ax.get_xticklabels(), rotation=45, ha="right",
         rotation_mode="anchor")

Теперь, чтобы добавить текстовые аннотации, которые показывают значения, содержащиеся в массиве nhl_games_won numpy, мы используем двойной цикл for и метод ax.text():

for i in range(len(nhl_teams)):
    for j in range(len(nhl_team_stats)):
        text = ax.text(j, i, nhl_games_won[i, j],
                       ha="center", va="center", color="w")

И, наконец, мы устанавливаем заголовок для тепловой карты, настраиваем отступ между и вокруг подграфика с помощью fig.tight_layout(pad=0.5) и вызываем plt.show() для отображения сгенерированного рисунка:

ax.set_title("NHL Games Won By Year")
fig.tight_layout(pad=0.5)
plt.show()

И вот окончательный результат — тепловая карта, сгенерированная с помощью matplotlib.pyplot:

Вот окончательная версия приведенного выше примера кода на GitHub.

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

  • Рисунок: рисунок в matplotlib — это основная основа для построения графика данных с помощью matplotlib.
  • Подзаговор: диаграмма меньшего размера, вложенная в фигуру matplotlib.
  • Отметки: серия значений по осям x или y для отображения координат на графике.

Заключение

Ну вот и все для этого поста! Спасибо, что следили за этой статьей, и если у вас есть какие-либо вопросы или проблемы, не стесняйтесь оставлять комментарии в этом посте, и я свяжусь с вами, когда найду время.

Если вы нашли эту статью полезной, не стесняйтесь поделиться ею и не забудьте подписаться на меня в Twitter и GitHub, связаться со мной в LinkedIn и подписаться на мой канал YouTube.