初始化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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...