2016-06-09 86 views
2

有时,我想绘制pcolormesh样式的离散值。使用Matplotlib以图例样式绘制离散色条

例如,为了表示在100×100的形状的2-d阵列含有INT 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

回答

3

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

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)]) 

enter image description here

+0

感谢您的解决方案! –