首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用RangeSlider改变轴向范围

用RangeSlider改变轴向范围
EN

Stack Overflow用户
提问于 2017-10-08 08:46:43
回答 1查看 1.5K关注 0票数 2

我用bokeh创建了一个情节,现在尝试向它添加一些小部件。目前,我想用RangeSlider改变x轴,但是我想我在回调方面有一些问题。随函附上代码:

代码语言:javascript
复制
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)

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-09 00:49:07

您必须分别在范围内设置startend

代码语言:javascript
复制
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的调用也是不必要的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46629183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档