使用BoundaryNorm设置离散的颜色贴图级别,但同时使用DivergingNorm指定颜色贴图的中心?

2024-06-26 14:02:26 发布

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

我想指定一个在特定值处具有离散级别的颜色贴图,但也要指定cmap的中心对齐的位置

frac_levels = [0, 0.1, 0.2, 0.5, 0.75, 1.0, 2.0, 3.0, 5.0, 7.0, 10.0]
frac_norm = colors.BoundaryNorm(boundaries=frac_levels, ncolors=256) 

这给了我一个在0、0.1等处具有离散边界的彩色贴图

如果我使用RedBu或任何发散的颜色贴图,1.0恰好位于中间

但是,如果我的级别更改为:

frac_levels = [0, 0.25, 0.5, 0.75, 1.0, 2.0, 3.0, 5.0, 7.0, 10.0, 15.0]
frac_norm = colors.BoundaryNorm(boundaries=frac_levels, ncolors=256) 
我仍然希望1在彩色地图的中间,但是2现在在中心。我可以使用colors.DivergingNorm(vmin=0., vcenter=1.0., vmax=15)或类似的方法来定义中点,但它是一个连续的颜色映射,不再是我想要的离散边界

有没有办法将这两种归一化方法结合起来

编辑:我可能会制作一个完全定制的颜色图,只包含我想要的颜色,但这似乎不是一个很好的解决方案,每次我的值改变时都需要定制


Tags: 方法norm颜色级别中心彩色边界cmap