【发布时间】:2021-07-16 10:57:27
【问题描述】:
我正在尝试更新在散景服务器上运行的图形。我发现您可以使用figure.extra_y_ranges = {'name':Range1d(0,10)} 然后调用figure.add_layout(LinearAxis(y_range_name='name'),'right') 将一个范围为0-10 的新y 轴添加到我的图中。但是,这仅对我有效,如果我在启动该图后立即执行此操作。然而,我想要做的是在单击按钮时添加新的 y 轴。
这是我正在运行的代码的简化版本:
from bokeh.io import curdoc
from bokeh.plotting import figure
from bokeh.models import LinearAxis, Range1d
from bokeh.models.widgets import Button
from bokeh.layouts import column, row, grid
def update_fig(fig):
fig.extra_y_ranges = {'a':Range1d(0,10)}
fig.add_layout(LinearAxis(y_range_name='a', axis_label='a'), 'left')
def update_axis():
update_fig(fig)
fig = figure()
fig.circle_dot([1,2,3,4],[1,2,3,4])
update_fig(fig) # This works
value_sel = Button(label='Add y-axis')
value_sel.on_click(update_axis) # This doesn't work
layout = row(
column(value_sel),
grid(fig)
)
curdoc().add_root(layout)
然后我使用bokeh serve --show example.py 运行该函数
感谢您的帮助,谢谢!
【问题讨论】:
-
我发现这似乎是一个已知的错误:github.com/bokeh/bokeh/issues/11033。是否可以使用 javascript 回调绕过该错误?
标签: python python-3.x visualization bokeh