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])
实际范围是什么或者您以后是否更改它们都无关紧要。