首页 > 解决方案 > 创建具有命名颜色值的 pcolormesh

问题描述

我想在 Python 中绘制一个 pcolormesh,而不是详细说明每种颜色的数值,就像使用颜色条一样,我想将每个数字映射到一个字符串 - 我只有有限的数值 - 并改为显示它们。比如:0='normal', 1='high', 2='very high',显示的是那些srings而不是数字。

标签: pythonmatplotlib

解决方案


一种方法循环遍历单元格并通过字典添加文本。

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: 'very\nhigh'}
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


推荐阅读