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

use*_*037 5 python streaming auto-update bokeh

我遇到了Bokeh服务器流图的奇怪的自动更新行为。本质上,使用流图可以自动更新轴范围。手动更改范围时,新范围仅会保留直到再次更新数据。此时,轴范围也将更新。

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

但是,使用“重置”工具后,旧的行为将再次被激活。

下面的代码显示了行为。启动脚本,然后单击按钮。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)
Run Code Online (Sandbox Code Playgroud)

小智 6

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