如何在散景中更改现有图像的范围和位置?

时间:2016-10-11 20:20:04

标签: bokeh

我在散景服务器中将2d数据显示为不同形状的图像,因此不仅需要动态更新图像的数据源,还需要动态更新其dwdh,{{1} }和x属性。在下面的虚拟示例中,这些更改是在回调函数中进行的,该函数连接到y小部件。

我已经发现我需要访问图像的Button对象的glyph属性,我可以通过其GlyphRenderer方法(参见代码)来实现。但是,在我单击工具栏的“重置”按钮之前,更改才会生效。我注意到,第二次激活update()函数时,这些更改也会神秘地生效。进行这些更改的正确方法是什么?

callback()

1 个答案:

答案 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)