散景范围仅限1个界限

时间:2016-07-29 00:51:05

标签: python visualization bokeh

我希望以下代码只设置绘图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个范围限制的最简单方法是什么?

2 个答案:

答案 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)