【发布时间】:2016-05-02 15:09:12
【问题描述】:
我正在尝试借助滑块无缝地传达大量科学数据。
我从 Bokeh 开始,对 JavaScript 几乎一无所知。我尝试设置第一种方法来滑过两个图像,但我无法刷新图像。
假设我的文件夹中有 1.png 和 2.png。
from bokeh.io import vform
from bokeh.models import CustomJS, ColumnDataSource, Slider
from bokeh.plotting import Figure, output_file, show
output_file('image.html')
source = ColumnDataSource(data=dict(url=['1.png']))
p = Figure(x_range=(0,1), y_range=(0,1))
callbackimg = CustomJS(args=dict(source=source), code="""
var data = source.get('data');
var f = cb_obj.get('value')
old = data['url'][0]
data['url'][0]= old.replace("1","f")
source.trigger('change');
""")
p.image_url('url',source=source, x=0, y=1,w=1,h=1)
slider = Slider(start=1, end=2, value=1, step=1, title="image number", callback=callbackimg)
layout = vform(slider, p)
show(layout)
我将Bokeh Widget Doc 中的示例改编为滑块和 working with images in bokeh。
我的想法是滑块,通过 callbackimg sn-p,将修改包含 url 的源,即要加载的图像的名称。 我现在认为,对源中的字符串进行简单访问,并通过滑块的当前值进行替换(因此当滑块从 1 变为 2 时,它应该从 1.png 跳到 2.png)应该做这个伎俩。
但是,一切都没有改变。我怀疑我在 Javascript sn-p 中做错了什么。
感谢您的反馈
编辑:我根据@bigreddot 的建议编辑了代码,但现在滑块在“2”位置滑动时只显示一个空图。 EDIT2:在我下面的回答中解决了这个问题
【问题讨论】:
标签: javascript python slider interactive bokeh