从多级FactorRange控制tick标签

时间:2018-01-10 15:08:51

标签: python bokeh

我有一个三级bokeh.models.FactorRange,用于在vbar-plot上绘制刻度标签。问题在于总共有几十个因素,而最低级别的标签变得非常狭窄。

我可以使用plot.xaxis.formatter = bokeh.models.PrintfTickFormatter(format='')来禁止绘制最低级别的标签,但这看起来像是一个丑陋的黑客。此外,我需要旋转第二级刻度标签,但plot.xaxis.major_label_orientation = ...只会影响最低级别的刻度(就像plot.xaxis.formatter一样)。

如何单独控制bokeh.models.FactorRange的每个级别?

2 个答案:

答案 0 :(得分:1)

从Bokeh 0.12.13开始,无法控制不同级别的个别方向或格式。

改进分类支持(对于多级轴等)的基本初始工作是一次大的更新。我们开始使用基本功能,期望及时听到用户有哪些其他功能是合理的,而不是为我们不确定任何人想要或需要的功能预先增加更多的复杂性和风险。这似乎已经出现了几次,所以考虑添加是合理的,但它代表了新的工作,所以GitHub feature request issue是适当的下一步。

为了完整起见,我将提到Bokeh是可扩展的,因此在技术上创建Custom Extension总是可行的。 Axes是Bokeh中最复杂的代码之一,完整的自定义Axis可能非常容易编写。但是,有可能创建CategoricalAxis的子类并且只是覆盖这一个方法:

https://github.com/bokeh/bokeh/blob/master/bokehjs/src/coffee/models/axes/categorical_axis.ts#L83-L110

这是当前硬编码'parallel'方向的位置,也是可以覆盖格式的位置。

答案 1 :(得分:0)

在最新的Bokeh(2.2.0)中,@ bigreddot正在谈论的功能似乎已经实现:您可以致电

p.xaxis.group_label_orientation = [angle in radians]

设置外部标签的方向,就像在问题中一样

p.xaxis.major_label_orientation = [angle in radians]

设置内部标签的方向。