Создание pcolormesh с именованными значениями цвета

#python #matplotlib

#python #matplotlib

Вопрос:

Я хочу построить pcolormesh на Python, но вместо того, чтобы детализировать числовые значения каждого цвета, как в colorbar, я хочу сопоставить каждое число со строкой — у меня есть только конечные числовые значения — и отобразить их вместо этого. Что-то вроде: 0 = ‘нормальный’, 1 = ‘высокий’, 2 = ‘очень высокий’, при этом вместо чисел отображаются эти значения.

Ответ №1:

Один подход перебирает ячейки и добавляет текст через словарь.

 import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
import numpy as np

mat = np.random.randint(0, 3, (5, 8))
cmap = ListedColormap(['lime', 'orange', 'tomato'])

plt.pcolormesh(np.arange(-0.5, mat.shape[1]), np.arange(-0.5, mat.shape[0]), mat, cmap=cmap)

color_dict = {0: 'normal', 1: 'high', 2: 'verynhigh'}
for i in range(mat.shape[0]):
    for j in range(mat.shape[1]):
        plt.text(j, i, color_dict[mat[i, j]], ha='center', va='center')
plt.show()
  

пример pcolormesh