如何解决初始化python交互式图以提高响应速度
我正在创建一个交互式绘图,其中包含一些线条和注释等。一个最小的工作示例是:
def make_plot(scale_factor):
fig = plt.figure(figsize=(8,8)) # create a figure object
ax = fig.add_subplot(1,1,1)
x = np.linspace(0,10)
y = np.sin(x)*scale_factor
ax.set_ylim(0,10)
ax.axhline(2,c='k')
plt.plot(x,y)
def make_interactive_plot():
scale_factor_slider = wg.FloatSlider(value=1,min=0,max=5,step=0.1,description=r'Scaling Factor')
wg.interact(make_plot,scale_factor = scale_factor_slider)
make_interactive_plot()
这可以正常工作,但是随着绘图变得越来越复杂,我不想每次使用滑块更改值时都重新绘图。我只想更新Line2D对象。这是matplotlib.animation功能的常见实现。我想做这样的事情:
def update_plot(line_obj,scale_factor):
print(scale_factor)
x = np.linspace(0,10)
y = np.sin(x)*scale_factor
line_obj.set_data(x,description=r'Scaling Factor')
wg.interact(update_plot,line_obj = line_obj,scale_factor = scale_factor_slider)
# Initialise plot just once
fig = plt.figure(figsize=(8,8)) # create a figure object
ax = fig.add_subplot(1,1)
ax.set_ylim(0,10)
ax.axhline(2,c='k')
line_obj,= ax.plot([],[])
make_interactive_plot()
不幸的是,这引发了:
ValueError: <matplotlib.lines.Line2D object at 0x7fb1dd3577d0> cannot be transformed to a widget
有人知道是否可以修改对象以更新交互式绘图吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。