我在散景服务器中将2d数据显示为不同形状的图像,因此不仅需要动态更新图像的数据源,还需要动态更新其dw
,dh
,{{1} }和x
属性。在下面的虚拟示例中,这些更改是在回调函数中进行的,该函数连接到y
小部件。
我已经发现我需要访问图像的Button
对象的glyph
属性,我可以通过其GlyphRenderer
方法(参见代码)来实现。但是,在我单击工具栏的“重置”按钮之前,更改才会生效。我注意到,第二次激活update()
函数时,这些更改也会神秘地生效。进行这些更改的正确方法是什么?
callback()
答案 0 :(得分:2)
我没有立即知道你编码的原因是什么。我可以建议显式使用ColumnDataSource并将所有Image字形属性链接到该源中的列。然后,您应该能够在一行中更新source.data并应用所有更新。
这里有一些不完整的示例代码,建议如何执行此操作:
from bokeh.models import Image, ColumnDataSource
from bokeh.plotting import figure
# the plotting code
plot = figure()
source = ColumnDataSource(data=dict(image=[], x=[], y=[], dw=[], dh=[]))
image = Image(data='image', x='x', y='y', dw='dw', dh=dh)
plot.add_glyph(source, glyph=image)
# the callback
def callback():
source.data = {'image': [np.random.random((100,100))], 'x':[1], 'y':[1], 'dw':[9], 'dh':[9]}
button.on_click(callback)