这个问题在这里已有答案:
我正在尝试使用matplotlib在Python中创建一个带有自定义注释的颜色渐变矩形。以下是根据值分配颜色的功能。我正在尝试创建一个参考标签(一个矩形,颜色显示分数)。我正在寻找这样的东西:https://stackoverflow.com/a/25679063/7733184我的颜色,但也根据我的功能指示范围。
def returncolor(value,colors):
if value < 0.55:
return '#B03A2E' #darkest red
if value < 0.60:
return '#EC7063' # light red
if value < 0.65:
return '#FCF3CF' # lighest yellow
if value < 0.70:
return '#F1C40F' # yellow
if value < 0.75:
return '#F39C12' # Orange
if value < 0.80:
return '#82E0AA'#light green
if value < 0.85:
return '#28B463'#dark green
if value < 0.90:
return '#7FB3D5'#light blue
if value < 0.95:
return '#2980B9'#dark blue
if value < 1:
return '#5B2C6F'#dark blue
我正在尝试做的一个模型如下:
根据the answer to this question,您可以使用ListedColormap
对象定义自定义色彩映射。
colors = ['#B03A2E','#EC7063','#FCF3CF','#F1C40F','#F39C12','#82E0AA','#28B463','#7FB3D5','#2980B9','#5B2C6F']
bounds = [0.5,0.55,0.60,0.65,0.70,0.75,0.80,0.85,0.90,0.95,1]
cmap = matplotlib.colors.ListedColormap(colors)
norm = matplotlib.colors.BoundaryNorm(bounds, cmap.N)
zvals = np.random.rand(100, 100) * 10
# tell imshow about color map so that only set colors are used
img = plt.imshow(zvals, cmap=cmap, norm=norm)
# make a color bar
plt.colorbar(img, cmap=cmap, norm=norm, boundaries=bounds, ticks=bounds)
plt.show()
另见matplotlib文档中的the example。