如何用bokeh创建成比例(预定义边界)的色带?

2022-04-07 00:00:00 python django bokeh

问题描述

我想绘制一个与图1一样在右侧带有比例色带的图,但使用bokeh而不是matplotlib。

以下是matplotlib版本,使用matplotlib colors.BoundaryNorm(bounds, cmap.N)使用比例(预定义边界)颜色条:

但我当前的bokeh版本的右侧颜色条不成比例,尽管我已经给出了滚动条边界:

我的bokeh代码:

ticker = FixedTicker(ticks=bounds)
bounds = [0, 5, 25, 75, 95,100]
color_bar = ColorBar(color_mapper=mapper, major_label_text_font_size='5pt',
                         ticker=ticker,
                         formatter=PrintfTickFormatter(format='%d%%'),
                         label_standoff=6, border_line_color=None, location=(0, 0))

我正在使用bokeh,因为它与Django一起工作得很好,并且它在bokeh库中有工具选项。

请提出建议。提前感谢,


解决方案

我从Disourse.bokeh.org社区支持得到了答复。有一种方法,但构建一个新功能会更好。 答案是here:

Bokeh 1.3.4只有线性和对数颜色映射器。没有"分段"色彩映射器的固有概念。 要做到这一点,可以创建一个包含100个条目的更大的调色板,这样就可以隐式地提供您想要的"中断"。例如

调色板=["黄色"]*5+["粉色"]*20+["红色"]*50+...

然后,此调色板可以与Low,High=(0,100)的LinearColorMapper一起使用。

分段颜色映射器将是对新功能的合理要求,也是新贡献者的一项出色的独立任务。请随时联系GitHub issue进行讨论。

所以,更新后的图表在这里,快乐!

相关文章