我希望以下代码只设置绘图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个范围限制的最简单方法是什么?
答案 0 :(得分:3)
您正在使用“哑”(非自动范围)DataRange1d
替换自动范围默认Range1d
。设置绘图创建的默认范围的end
值,而不替换整个范围。或者,替换为新的DataRange1d
:
from bokeh.models import DataRange1d
p = figure(y_range=DataRange1d(end=100))
或
p.y_range.end = 100
答案 1 :(得分:0)
Range1d(start=None, end=100)
(正如您在评论中所指的那样)仅定义您的初始视图。一个Range没有起点和终点都没有意义,所以如果你给它start=None
,它只会使用它的默认值0
。< / p>
我认为你要做的是这样的事情:
Range1D(start=value1, end=value2, bounds=(None, 100))
这将给你一个100的上限,没有下限。
有关更多规范和示例,请参阅docs。
编辑:好吧,我最初准备好你的问题,好像你试图设置界限一样。您希望改为使用DataRange1D
类。如果您只是确保不覆盖start
,则默认为&#34; auto&#34;。
换句话说,这应该做你想要的:
DataRange1D(end=100)