Matplotlib: Тепловые карты

Matplotlib: Тепловые карты


import numpy as np

import matplotlib.pyplot as plt

from matplotlib.colors import TwoSlopeNorm # позволяет задать "середину" шкалы цветов


# 1. Генерируем случайные данные (100 строк, 6 переменных)

rng = np.random.RandomState(1)

data = rng.randn(100, 6) # нормальное распределение


# 2. Вычисляем корреляционную матрицу (6x6)

corr = np.corrcoef(data, rowvar=False)  

labels = [f'V{i}' for i in range(corr.shape[0])]


fig, ax = plt.subplots()


# 3. Нормализация шкалы так, чтобы 0 был белым цветом, -1 и 1 — крайние тона

norm = TwoSlopeNorm(vmin=-1, vcenter=0, vmax=1)


# 4. Рисуем тепловую карту

im = ax.imshow(corr, cmap='RdBu_r', norm=norm)


# 5. Настраиваем подписи осей

ax.set_xticks(np.arange(len(labels)))

ax.set_yticks(np.arange(len(labels)))

ax.set_xticklabels(labels, rotation=45)

ax.set_yticklabels(labels)


# 6. Добавляем текстовые значения корреляций в каждую ячейку

for i in range(corr.shape[0]):

  for j in range(corr.shape[1]):

    ax.text(j, i, f"{corr[i, j]:.2f}", ha='center', va='center', fontsize=8)


# 7. Добавляем цветовую шкалу

fig.colorbar(im, ax=ax)

plt.show()

Report Page