Matplotlib: продвинутый уровень

Тепловые карты с imshow и цветовыми картами

Нарисуйте тепловую карту двумерной таблицы с ax.imshow, цветовой картой, цветовой шкалой и значением в каждой ячейке.

Введение

Тепловая карта раскрашивает каждую ячейку таблицы по её значению, и закономерности в строках и столбцах сразу бросаются в глаза. ax.imshow рисует двумерный массив цветными ячейками, цветовая карта (cmap) превращает числа в цвета, а fig.colorbar показывает шкалу.

visits - массив 7 × 6: строка на день и столбец на время суток. imshow рисует строку 0 сверху, а set_xticks / set_yticks подписывают столбцы и строки. Двойной цикл пишет каждое значение в его ячейку через ax.text(столбец, строка, ...). Последовательные карты вроде viridis подходят для значений от малых к большим, расходящиеся вроде coolwarm - для значений выше и ниже середины.

Интерактивный визуализатор

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

Запускаемый пример Matplotlib

Matplotlib
Запустить код →
main.py
import matplotlib.pyplot as plt
import numpy as np

days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
hours = ["6am", "9am", "12pm", "3pm", "6pm", "9pm"]
rng = np.random.default_rng(2)
visits = rng.integers(5, 60, size=(len(days), len(hours)))

fig, ax = plt.subplots(figsize=(7, 4))
image = ax.imshow(visits, cmap="viridis")
ax.set_xticks(range(len(hours)), hours)
ax.set_yticks(range(len(days)), days)
for row in range(len(days)):
    for col in range(len(hours)):
        ax.text(col, row, visits[row, col], ha="center", va="center", color="white", fontsize=8)
fig.colorbar(image, label="Visits")
ax.set_title("Website visits by day and hour")
plt.show()
Получить кнопку запуска для этого примера График, который рисует этот код
Тепловые карты с imshow и цветовыми картами