如何用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进行讨论。
所以,更新后的图表在这里,快乐!
相关文章