使用 Matplotlib 的颜色条扩展中的颜色渐变

玛丽-夏娃 LB

当使用颜色图set_overset_under方法选择将出现在颜色栏扩展中的超出范围值的颜色时,只能选择一种颜色。我正在寻找一种解决方法,以便能够在颜色栏扩展中显示颜色渐变。例如,我创建的颜色条的最后一种颜色是浅粉色,扩展部分是统一的红色。我想要的是一个以相同的浅粉色开始并逐渐变成红色的扩展。

这是我使用的代码:

import matplotlib as mpl
from matplotlib.backends.backend_agg import FigureCanvasAgg
from matplotlib.colors import LinearSegmentedColormap
from matplotlib.figure import Figure

# data
bounds = [0, 15, 25, 40]
style_color = [[247, 247, 247],
               [5, 113, 176],
               [146, 197, 222],
               [244, 165, 130],
               [202, 0, 32]]

# transform color rgb value to 0-1 range
color_arr = []
for color in style_color:
    rgb = [float(value)/255 for value in color]
    color_arr.append(rgb)

# normalize bound values
norm = mpl.colors.Normalize(vmin=min(bounds), vmax=max(bounds))
normed_vals = norm(bounds)

# create a colormap
cmap = LinearSegmentedColormap.from_list(
    'my_palette',
    list(zip(normed_vals, color_arr[:-1])),
    N=256
    )
cmap.set_over([color for color in color_arr[-1]])
cmap.set_under([color for color in color_arr[0]])

# create a figure
fig = Figure(figsize=(2, 5))
canvas = FigureCanvasAgg(fig)
ax = fig.add_subplot(121)

# create the colorbar
cb = mpl.colorbar.ColorbarBase(ax,
                               cmap=cmap,
                               norm=norm,
                               extend='max',
                               ticks=bounds)

fig.savefig('colorbar_extensions')

结果颜色条:

这是我使用当前代码获得的颜色条。

阿斯姆斯

我认为cmap.set_overcmap.set_under方法旨在突出严格的截止值,即“突出显示在一种特定颜色中过高的每个值,例如红色”。

如果我理解正确,您希望您的颜色条具有朝向高于特定阈值的值渐变,因此只需将阈值添加到您的边界:

# data
bounds = [0, 15, 25, 40, 45] # <- "45" is new here
style_color = [[247, 247, 247],
               [5, 113, 176],
               [146, 197, 222],
               [244, 165, 130],
               [202, 0, 32],
               [255, 0, 0]] # <- the mapped color for the boundary "45" is [r,g,b] red.

现在,您需要cmap.set_over([color for color in color_arr[-1]])通过使用ticks=bounds[:-1].

产量:

调整后的颜色条

注意:您可能希望选择这个“值高于阈值”点接近 40(例如 41),这样颜色条在顶部看起来不会那么“拉伸”,但是这会压缩渐变太多以至于它几乎看起来又像你原来的情节了。在这种情况下,您需要指定不同的红色色调作为阈值颜色。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章