如何在ipywidgets布局中更新imshow?

问题描述

问题

我想显示一个链接到ipywidgets中的 Play 按钮的滑块,然后从matplotlib更新一个imshow图。但是,我希望图像保留在那里,只绘制更改过的艺术家,而不必清除输出以再次绘制所有内容。 bqplot可以很好地处理这种情况,但是显示gridheatmap显示了编辑刻度标签和matplotlib可以很好处理的设计的其他部分的挑战。有些人使用了interact,但是这种方法限制了我处理特征的自由。

我的代码

slider=wd.IntSlider(value=0,min=0,max=49,continuous_update=False)
play_button=wd.Play(
    value=0,step=1,interval=850,description="Press play",disabled=False
)

def slider_update():
    global im
    global fig
    slider.value=change.new
    label.value="Time: {}".format(slider.value)
    
    with out:
        new_data=random_data[:,:,slider.value]
        im.set_data(new_data)
        im.set_clim(0,np.max(new_data))

        background = fig.canvas.copy_from_bBox(ax.bBox)
        fig.canvas.flush_events()
        fig.canvas.restore_region(background)
        ax.draw_artist(im)
        fig.canvas.blit(ax.bBox)
        
        plt.show(fig)
    
label=wd.Label("Time: 0")
# slider.observe(slider_update,"value")
wd.jslink((play_button,"value"),(slider,"value"))
widget=wd.interactive(slider_update,idx=slider)

out=wd.Output()
app=wd.VBox([wd.HBox([play_button,slider,label]),out])


display(app)

输出

enter image description here

预期输出

enter image description here

但是图像只更新了关节,从而获得了平滑的动画效果(最后一张图像是通过display(app,fig)来完成的,它不能满足我的要求。

有人可以帮忙吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)