在IPython Notebook中使用交互式窗口小部件时,特别是FloatSliderWidget,有没有办法延迟最终结果的渲染?
我使用小部件和底图来显示地图数据,并且在每个步骤(滑动滑块时控制图像叠加alpha)的渲染尝试非常慢。
我可以设置延迟最终渲染的标志等吗?或者在我设置所有滑块时添加一个按钮来显示图像?
非常感谢您的帮助。
干杯, 学家
答案 0 :(得分:4)
interact_manual
函数的作用类似于interact
,但使用“运行”按钮而不是自动更新。 Docs。我认为这是IPython 3中的新功能。
对于更常见的限制小部件,所有小部件都应具有.msg_throttle
属性。这是一次可以在“管道中”进行的更新。默认值为3,因此当您拖动滑块时,它会将三个值排队以获得结果。将其设置为1应该使它对慢速函数更具响应性 - 在上一次执行完成之前不会发送另一个值。对于更快的功能,较低的值会使输出变化不太顺畅。
答案 1 :(得分:1)
2019年更新
现在有选项continuous_update=False
,它限制了从滑块到鼠标释放事件的执行。
(https://minrk-ipywidgets.readthedocs.io/en/latest/examples/Using%20Interact.html)
实际上,它是这样的:
from ipywidgets import *
import numpy as np
import matplotlib.pyplot as plt
t= np.arange(0,1,0.01)
def pltsin(f):
plt.plot(t,np.sin(2*np.pi*t*f))
plt.show()
interact(pltsin,f=FloatSlider(min=1, max=23, step=1,continuous_update=False))