使用Matplotlib绘制离散的色条图例

7
有时候,我想以pcolormesh的方式绘制离散值。
例如,表示一个二维数组,其形状为100x100,其中包含0~7的整数。
data  = np.random.randint(8, size=(100,100))
cmap = plt.cm.get_cmap('PiYG', 8) 
plt.pcolormesh(data,cmap = cmap,alpha = 0.75)
plt.colorbar()  

这个图像显示如下:
enter image description here 如何生成一个类似于图例的颜色条?换句话说,每个颜色框对应它的值(例如粉色颜色框--> 0)。
这里有一个示例(不适用于此示例): enter image description here
1个回答

10

也许最简单的方法是创建相应数量的Patch实例:

import matplotlib.patches as mpatches
import matplotlib.pyplot as plt
import numpy as np

data  = np.random.randint(8, size=(100,100))
cmap = plt.cm.get_cmap('PiYG', 8) 
plt.pcolormesh(data,cmap = cmap,alpha = 0.75)
# Set borders in the interval [0, 1]
bound = np.linspace(0, 1, 9)
# Preparing borders for the legend
bound_prep = np.round(bound * 7, 2)
# Creating 8 Patch instances
plt.legend([mpatches.Patch(color=cmap(b)) for b in bound[:-1]],
           ['{} - {}'.format(bound_prep[i], bound_prep[i+1] - 0.01) for i in range(8)])

这里输入图片描述


感谢您的解决方案! - Han Zhengzu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接