#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()