使用自定义渐变

时间:2017-12-20 20:35:43

标签: python matplotlib

我正在尝试使用 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

我正在尝试做的模型如下:

enter image description here

1 个答案:

答案 0 :(得分:1)

根据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()

enter image description here

另请参阅matplotlib的文档中的the example