散景范围仅设置 1 绑定

Bokeh Range Set Only 1 Bound

我希望以下代码仅设置绘图 y 范围的上限,但下限也莫名其妙地设置为 0:

import bokeh.plotting as bkp
import numpy as np

bkp.output_file("/tmp/test_plot.html")
fig = bkp.figure(y_range=[None, 100]) # plot y range: 0-100
# fig = bkp.figure() # plot y range: 50-100
fig.line(np.linspace(0, 1, 200), np.random.random(200)*50+50) # number range: 50-100
bkp.save(fig)

为什么会这样?仅设置 1 个范围界限的最简单方法是什么?

Range1d(start=None, end=100)(正如您在评论中也提到的那样)仅定义您的初始视图。 Range 没有起点和终点是没有意义的,所以如果你给它 start=None,它只会使用它的默认值 0.

我想你想做的是这样的:

Range1D(start=value1, end=value2, bounds=(None, 100))

这将为您提供上限 100,没有下限。

有关更多规范和示例,请参阅 docs

编辑:好的,我最初准备好你的问题,就好像你试图设定界限一样。那么,您想改用 DataRange1D class。如果您只是确保不覆盖 start,它将默认为 "auto"。 换句话说,这应该做你想做的事:

DataRange1D(end=100)

您正在用 "dumb"(非自动量程)Range1d 替换默认的自动量程 DataRange1d。设置绘图创建的默认范围的 end 值,而不替换整个范围。或者,替换为新的 DataRange1d

from bokeh.models import DataRange1d
p = figure(y_range=DataRange1d(end=100))

p.y_range.end = 100