创建一个不对称的颜色图

create an asymmetric colormap

我正在为 map colors in a folium choropleth map, using code from here:

创建颜色映射
from branca.colormap import linear

colormap = linear.RdBu.scale(
    df.MyValue.min(),
    df.MyValue.max())

colormap

如您所见,最小值和最大值与 0 相比有偏差,我希望这反映在颜色图中,即只有 < 0 的值应映射为红色,而所有正值应该映射到蓝色。

有没有办法让颜色图中出现这种不对称?我在网上看到的例子不多。

我这样做:

colormap = colormap.to_step(index=[-200, 0, 1200])

但并不顺利:

如果你想要不对称的色标(在文档中称为不规则),你可以设置索引。示例:

import branca.colormap as cm

colormap = cm.LinearColormap(colors=['red','blue'], index=[-200,0],vmin=-200,vmax=1200)
colormap

转换将由您的索引给出。例如,这些是其他转换:

colormap = cm.LinearColormap(colors=['red','blue'], index=[0,200],vmin=-200,vmax=1200)
colormap

添加第三种颜色:

   colormap = cm.LinearColormap(colors=['red','lightblue','blue'], index=[-200,0,1200],vmin=-200,vmax=1200)
    colormap

MPL 已经内置了 TwoSlopeNorm class: https://matplotlib.org/stable/tutorials/colors/colormapnorms.html?highlight=twoslopenorm#twoslopenorm-different-mapping-on-either-side-of-a-center