繁体   English   中英

Python,散景:如何关闭轴的自动更新

[英]Python, Bokeh: How to turn off auto-update of axes

我遇到了散景服务器流图的奇怪自动更新行为。 本质上,使用流式绘图,轴范围会自动更新。 当手动更改范围时,新范围仅持续到数据再次更新。 此时,轴范围也会更新。

可以使用任何平移或缩放工具“关闭”此行为。 例如,如果缩小绘图,轴范围不再自动更新,并且手动更改的范围被锁定。

但是,在使用重置工具后,旧行为再次被激活。

下面的代码显示了行为。 启动脚本并单击按钮。 y 轴范围更改为 0:50。 数据更新后,范围跳回其原始设置。 但是,如果您平移绘图然后单击按钮,则范围将保持在 0:50,直到您点击重置。

我现在想知道如何在单击按钮后关闭自动范围更新

# Import libraries
from bokeh.io import curdoc
from bokeh.models import ColumnDataSource, Range1d, LinearAxis
from bokeh.models.widgets import Button
from bokeh.layouts import layout
from bokeh.plotting import figure
from random import randrange


# Create figure
f=figure()

# Create ColumnDataSource
source = ColumnDataSource(dict(x=[],y=[]))

# Create Line
f.line(x='x',y='y',source=source)

def update_all():
    new_data=dict(x=[randrange(1,10)],y=[randrange(1,10)])
    source.stream(new_data,rollover=15)

# Update axis function
def update_axis():
    f.y_range.start = 0 
    f.y_range.end   = 50

# Create Button
button = Button(label='Set Axis')

# Update axis range on click
button.on_click(update_axis)

# Add elements to curdoc 
lay_out=layout([[f, button]])
curdoc().add_root(lay_out)
curdoc().add_periodic_callback(update_all,2000)

初始化 x 和 y 范围似乎禁用了“自动更新”行为: f = figure(x_range=[0, 10], y_range=[0, 100])实际范围是什么或是否更改都无关紧要他们后来。

如果这不是严格意义上的答案,请道歉,但我没有足够的声誉来评论。

这似乎与我用html或笔记本输出(不是服务器)观察到的问题类似。 出于某种原因,以编程方式设置轴限制似乎并没有“坚持”( 这里的 SO问题和GitHub 问题 )。

显然,为任一轴显式指定Range1D会关闭自动缩放功能。

此处对类似问题的回答描述了这一点。

默认的DataRange1d对象执行自动缩放。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM