如何将值映射到colorbar自定义条形图颜色

2024-05-14 12:40:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我想自定义条形图的条形图颜色取决于一些标准。颜色值应该取自内置的python colormap“seismic”red->;white->;blue。我做不到(我设置的值没有正确映射到colormap颜色) 例子: -如果我设置为0,我想要最深的蓝色=>;我没有它 -如果我设置为1,我想要最深的红色=>;我没有它 -如果我将值设置为0和1之间,我希望colormap“seismic”的颜色在该范围内=>;但是如果我将值设置为0.34,则拾取的颜色为0.39。。。你知道吗

我试过在这里和那里找到的不同的代码片段,但到目前为止没有任何帮助

# bar color list
bar_color = []

for x in y_val:
    # I would like to assign the most red color of my color bar so "1"!
    if y_line_val > y_val[count] + yerr[count]:
        bar_color.append(1)
    # I would like to assign the most blue color of my color bar so "0"!
    elif y_line_val < y_val[count] - yerr[count]:
         bar_color.append(0)
    # I pick up a color between [0,1] => 0.34 in this example
    else:
        bar_color.append(yerr[count]/yerr_max)
    count += 1

my_cmap = cm.get_cmap('seismic')
print(my_cmap)
#<matplotlib.colors.LinearSegmentedColormap object at 0x7efea9b3b748>
colors = my_cmap(bar_color)
print(colors)
#[[ 0.5         0.          0.          1.        ] => why not 1
# [ 0.5         0.          0.          1.        ] => why not 1
# [ 0.5         0.          0.          1.        ] => why not 1
# [ 0.39607843  0.39607843  1.          1.        ]] => why not 0.34
norm = mpl.colors.Normalize(vmin=0, vmax=1)
m = cm.ScalarMappable(cmap=my_cmap, norm=norm)

m.set_array([])

cbar = plt.colorbar(m)
cbar.set_label('Chance of being lower than the line', rotation=270, labelpad=25)

#creation color bar
bar = ax.bar(ind, y_val, yerr=yerr, align='center', alpha=0.5, edgecolor='black', linewidth=2, ecolor='black', capsize=10, color=colors)

plt.show()

在代码中查看我得到的颜色值与我期望的颜色值。 我确信我在地图绘制过程中遗漏了一些东西。。。你知道吗

我不想使用一个解决方案循环的酒吧和设置一个脸色取决于一些标准。。。相反,我想使用一个解决方案与色彩图。你知道吗

谢谢你的帮助


Tags: thegt颜色mycountnotbarval

热门问题