使用matplotlib的色彩图进行散景的色条

时间:2018-04-19 22:45:18

标签: python-2.7 matplotlib bokeh

我想使用matplotlib的coolwarm colormap创建一个散景ColorBar(http://bokeh.pydata.org/en/latest/docs/user_guide/annotations.html#color-bars)。蜱虫没有必要。我该怎么做?

1 个答案:

答案 0 :(得分:2)

这里的关键是为matplotlib的coolwarm colormap获取一个有效的调色板。 bokeh.palette模块只有四个matplotlib调色板,不包括coolwarm。您需要自己制作(或使用colorcet包,如后面所述)。

典型的大bokeh.palette在(十六进制)RGB颜色字符串列表中有256种颜色。一般的想法是从matplotlib coolwarm colormap中采样256种颜色,然后将它们转换为(十六进制)RGB颜色字符串列表。使用数字列表实例化coolwarm类将返回RGBA颜色列表。每种颜色的RGB值在[0,1]和A = 1.0之内。 bokeh.colors.RGB一次需要一个RGBA输入,RGBA在[0,255]内是独立的int参数。

from bokeh.colors import RGB
from matplotlib import cm

m_coolwarm_rgb = (255 * cm.coolwarm(range(256))).astype('int')
coolwarm_palette = [RGB(*tuple(rgb)).to_hex() for rgb in m_coolwarm_rgb]

您现在可以使用coolwarm_palette作为palette(替换" Viridis256")排成一行:

color_mapper = LogColorMapper(palette="Viridis256", low=1, high=1e7)

或者,如果您可以选择colorcet package,则可以使用AsyncTaskcolorcet.coolwarm是此处使用的palette。但是,正如您自己尝试后看到的那样,由于颜色采样的差异,最终的颜色分布略有不同。