如何调整Bokeh轴上的刻度数(在小图上标签重叠)

19

我有一个多图层的 Bokeh 绘图,这些图层是垂直堆叠且对齐的。由于我想要将这些绘图垂直对齐,因此 y 轴标签被旋转成了竖直方向而非水平方向。

在某些情况下,Bokeh 会生成太多的刻度线,导致刻度标签完全重叠,难以辨认。以下是一个示例:

import bokeh.plotting as bp
import numpy as np

y = np.random.uniform(0, 300, 50)
x = np.arange(len(y))

bp.output_file("/tmp/test.html", "test")
plot = bp.figure(plot_width=800, plot_height=200)
plot.yaxis.axis_label_text_font_size = "12pt"
plot.yaxis.major_label_orientation = 'vertical'

plot.line (x,y)
bp.show(plot)

除了使渲染器聪明到自动产生更少的标签之外,是否有一种方法来指示在轴上放置标签的数量?

似乎生成的标签数与数据范围有关,即其亲和力是否接近10的幂。


嘿,伙计,非常非常晚的回复哈哈,但你有没有找到解决办法?我遇到了类似的问题,在我的个人资料上发布了帖子,如果你能看一下就好了。谢谢!@Jonathan Shore - mrblue6
2个回答

21

现在你可以使用 desired_num_ticks 属性来控制刻度线的数量。请参阅 bokeh 文档中的示例(以及这个issue)。

例如,在您的情况下,可以像这样设置:plot.yaxis[0].ticker.desired_num_ticks = 10


10

看起来仍然没有直接指定的方法。 请遵循相关的问题。 这是一个解决方法:

from bokeh.models import SingleIntervalTicker, LinearAxis

plot = bp.figure(plot_width=800, plot_height=200, x_axis_type=None)
ticker = SingleIntervalTicker(interval=5, num_minor_ticks=10)
xaxis = LinearAxis(ticker=ticker)
plot.add_layout(xaxis, 'below')

您可以通过SingleIntervalTicker中的interval参数来控制票数。


嗯,实际上这些数字/布局是在一个通用类中创建的,与数据的渲染分开,所以在那个时候我无法知道要使用这个技巧的实际数据范围。话虽如此,它确实提供了一种可能的解决方法,只是在我的情况下不太适用,所以我会将其标记为已回答。谢谢。 - Jonathan Shore

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接