我想使用matplotlib的coolwarm colormap创建一个散景ColorBar(http://bokeh.pydata.org/en/latest/docs/user_guide/annotations.html#color-bars)。蜱虫没有必要。我该怎么做?
答案 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,则可以使用AsyncTask
。 colorcet.coolwarm
是此处使用的palette
。但是,正如您自己尝试后看到的那样,由于颜色采样的差异,最终的颜色分布略有不同。