gpt4 book ai didi

python - 使用 RangeSlider 更改轴范围

转载 作者:太空宇宙 更新时间:2023-11-04 02:40:41 27 4
gpt4 key购买 nike

我已经用 Bokeh 创建了一个图,现在正尝试向其中添加一些小部件。目前我想用 RangeSlider 更改 x 轴,但我认为我在回调方面遇到了一些麻烦。随函附上代码:

import pandas as pd
import numpy as np
import bokeh.plotting as bp
from bokeh.models import CustomJS
from bokeh.models.widgets import RangeSlider
from bokeh.layouts import row, widgetbox
from bokeh.plotting import figure, show, output_file


df = pd.DataFrame(np.random.randint(0,30,size=(100, 3)), columns=list('ABC'))
df.index.name ='Numbers'
dt = bp.ColumnDataSource(df)

output_file("Plot.html")

p = figure(title="Example",
x_axis_label = "Number", y_axis_label = "Temperature in C",
x_range=(0,100))

p.line(source=dt, x='Numbers', y='A', color='blue', legend='Line A')
p.line(source=dt, x='Numbers', y='B', color='red', legend='Line B')
p.line(source=dt, x='Numbers', y='C', color='green', legend='Line C')
p.legend.click_policy="hide"

callback = CustomJS(args=dict(p=p), code="""
var a = cb_obj.value;
p.x_range = a;
p.change.emit();
""")

range_slider = RangeSlider(start=0, end=100,value=(2,75), step=1, title="Test")
range_slider.js_on_change('value', callback)


layout = row(p,widgetbox(range_slider))
show(layout)

提前致谢!

最佳答案

您必须分别在范围上设置开始结束:

callback = CustomJS(args=dict(p=p), code="""
var a = cb_obj.value;
p.x_range.start = a[0];
p.x_range.end = a[1];
""")

此外,调用 emit 是不必要的。

关于python - 使用 RangeSlider 更改轴范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46629183/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com