[英]Bokeh, Python: How to update range of extra axis
我想用2个y轴创建一个绘图,其范围在按钮点击时更新。 该脚本将在Bokeh服务器上运行。 请注意,在下面的代码中,通过更改f.y_range.start / end来更新主y轴。 但是,对于辅助y轴,这是不可能的。 我尝试了另外两个命令,即
f.extra_y_ranges.update({"y2Range": Range1d(start=0, end=50)})
和
f.extra_y_ranges.update = {"y2Range": Range1d(start=0, end=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
# Create figure
f=figure()
# Create ColumnDataSource
source = ColumnDataSource(dict(x=range(0,100),y=range(0,100)))
# Create Line
f.line(x='x',y='y',source=source)
f.extra_y_ranges = {"y2Range": Range1d(start=0, end=100)}
f.add_layout(LinearAxis(y_range_name='y2Range'), 'left')
# 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)
我遇到了类似的问题。 我能够通过'extra_y_axis'字典通过我创建的名称访问辅助轴的范围来更新辅助轴的范围。 对于您的情况,它应该看起来像:
# Update primary axis function
def update_axis():
f.y_range.start = 0
f.y_range.end = 50
# Update secondary axis function
def update_secondary_axis():
f.extra_y_ranges['y2Range'].start = -20 #new secondary axis min
f.extra_y_ranges['y2Range'].end = 80 #new secondary axis max
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.