FuncAnimation问题,AttributeError:'NoneType'对象没有属性'canvas'

时间:2020-09-30 21:47:59

标签: python animation heartrate

想要为模拟ECG数据生成实时图。如果没有funcAnimations,一次获取文件图形非常简单,但是我希望hp.plotter函数继续绘制并查看数据文件,因此我可以获得实时更新的绘制。我看过很多fun​​cAnimations,但是还没有看到一个可以清晰地对函数进行动画处理的示例。我还假设可能需要在def animate:下添加更多行,但是我不确定应该如何处理,因为数据文件中只有一列,并且该文件将产生一个新的行。频率为40hz的线

#import packages

import heartpy as hp
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

sample_rate = 40
data = np.loadtxt('temp.1D')

#plt.figure(figsize=(12,4))
#plt.plot(data)
#plt.show()
 

wd, m = hp.process(data,40) #run analysis

 
#function called periodically from funcanimation
def animate(i): 
    y_values.append(next(index))
    plt.cla()
    
    #keep reading from open heart rate file
    
        
        
        
        
        
#visualise in plot of custom size
    plt.figure(figsize=(12,4))
plot_object = hp.plotter(wd,m,moving_average=True)

#set up plot to call animate () function periodically
ani = animation.FuncAnimation(plot_object, animate, interval=1000)
plt.show()

暂时收到错误:

File "/Users/jsmith/Documents/hearttest.py", line 43, in <module>
    ani = animation.FuncAnimation(plot_object, animate, interval=1000)

  File "/Users/jsmith/miniconda3/lib/python3.8/site-packages/matplotlib/animation.py", line 1656, in __init__
    TimedAnimation.__init__(self, fig, **kwargs)

  File "/Users/jsmith/miniconda3/lib/python3.8/site-packages/matplotlib/animation.py", line 1414, in __init__
    event_source = fig.canvas.new_timer(interval=self._interval)

AttributeError: 'NoneType' object has no attribute 'canvas'

我是否需要以某种方式进一步定义plot_object,例如plot_object = FigureCanvasTkAgg(self.f,toplevel)

将功能hp.plotter(分析已分析的工作目录数据)定义为plot_object的权利还吗?还是可以仅在功能动画设置中使用hp.plotter

也许我还需要对hp.process(data,40)进行动画处理,因为从技术上讲,它需要处理添加的每行新数据,但是我还需要对绘图仪函数hp.plotter进行动画处理以不断更新绘图仪。我还认为我需要保持wd,m处理过的数据或数据文件本身在def=Animate(i)下打开,但是不确定如何处理像wd,m这样的字典数据。

0 个答案:

没有答案