我正在尝试使用滑块无缝传递大量科学数据。
我开始使用Bokeh,对JavaScript几乎没有了解。我试图设置第一种方法,以便能够滑动两个图像,但我无法刷新图像。
假设我的文件夹中有1.png和2.png。
我从Bokeh Widget Doc和working with images in bokeh中引用了一些示例。
我的想法是,通过回调img片段,滑块将修改包含url(即要加载的图像的名称)的源。 我认为,目前简单地访问源中的字符串,并通过滑块的当前值进行替换(因此当滑块从1到2时,它应该跳过1.png到2.png),就可以解决问题。
然而,什么都没有改变。 我怀疑在Javascript片段中做错了什么。
感谢任何反馈
编辑:根据@bigreddot的建议,我编辑了代码,但现在当位置“2”滑动时,滑块只显示一个空图形。 编辑2:在我的下面的答案中解决了这个问题
我开始使用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中引用了一些示例。
我的想法是,通过回调img片段,滑块将修改包含url(即要加载的图像的名称)的源。 我认为,目前简单地访问源中的字符串,并通过滑块的当前值进行替换(因此当滑块从1到2时,它应该跳过1.png到2.png),就可以解决问题。
然而,什么都没有改变。 我怀疑在Javascript片段中做错了什么。
感谢任何反馈
编辑:根据@bigreddot的建议,我编辑了代码,但现在当位置“2”滑动时,滑块只显示一个空图形。 编辑2:在我的下面的答案中解决了这个问题
logo.text
可以被动态更改,将其视为常规的Python字符串,例如:"""<img src="static/image/{}.png" alt="logo">""".format(file_name)
(在Python 3.7.3和bokeh 1.2.0中测试通过)。 - Arturo Moncada-Torres