如何每秒更新python中的图表

时间:2019-04-07 18:42:10

标签: python charts live

我正在尝试通过使用matplotlib.animation每秒更新一次时间序列数据。这将用于从多个通道进行数据采集。但是,当我在update()函数中使用动画时,没有达到间隔时间(这些函数循环更快)。请帮助我阐明如何以更适当的方式调用更新函数。谢谢。

  • 大多数示例显示从函数外部调用update()。但是,在这种情况下,一次更新多个频道成为问题。

    def update(self,start):
        x = np.random.normal(size=1)
        y = np.random.normal(size=1)
        deneme=self.graphicsView.plot(x,y,pen=None,symbol='+')
        time.sleep(0.2)
        animation.FuncAnimation(self.graphicsView,ui.update(),interval =1000)
    

2 个答案:

答案 0 :(得分:0)

尝试:

from datetime import time
second = datetime.now().strftime("%S")
while True:
    do some things your code should do (no time.sleep in there)
    second_before = datetime.now().strftime("%S")
    if second != second_before:
        second = second_before
        call the function

答案 1 :(得分:0)

我发现了以下一种方法。使用thrading.Timer似乎可以正常工作。现在,我正在通过检查过程持续时间来确保间隔的准确性。

    def callfunc(self,val):
         process_delta=time.time()-val
         t=threading.Timer(1-process_delta,Ui_Dialog.update,args=(self,))
         t.daemon=True
         t.start()

    def update(self):
        process_start=time.time()
        value1=[]
        deltatime1=[]
        deltatime1.append(time.time()-start)
        y = np.random.normal(size=1)

        deneme=self.graphicsView.plot(deltatime1,y,pen=None,symbol='+')
        QtCore.QCoreApplication.processEvents()

        self.callfunc(process_start)

     start=time.time()   
     ui.callfunc(0)