2014-06-16 27 views
4

我正在尋找類似於FuncAnimation與blit的東西,但不是讓庫在一個固定的時間步調用一個函數,而是我希望在我準備好時調用該函數。我不明白matplotlib用函數返回的軸來做什麼來更新它們。我正在處理來自外部來源的實時數據,我希望刷新率與該數據同步。matplotlib中的FuncAnimation的手動時間循環控制

+0

您可能需要使用沿着這個問題,而不是使用FuncAnimation本身的東西線:http://stackoverflow.com/questions/10944621/dynamically-updating -plot功能於matplotlib – Ajean

回答

0

我已經做了這樣的事情

import sys 
import os 
import random 
from PySide import QtGui,QtCore 
os.environ['QT_API'] = 'pyside' 
from matplotlib import use 
use('Qt4Agg') 
import pylab as plt 

class Example(QtGui.QMainWindow): 

    def __init__(self): 
     super(Example, self).__init__() 
     self.setWindowTitle('Widgets') 
     self.setGeometry(300, 300, 250, 150) 

     self.wid = QtGui.QWidget() 
     self.grid = QtGui.QGridLayout() 
     self.wid.setLayout(self.grid) 
     self.setCentralWidget(self.wid) 

     self.dat = [] 
     self.timer = QtCore.QTimer() 
     self.timer.timeout.connect(self.toc) 
     self.timer.start(100) 
     self.show() 

     self.fig = plt.figure(13) 
     plt.show() 


    def toc(self): 
     val = random.uniform(-1.7, 0.78) 
     self.dat.append(val) 
     plt.ion() 
     fig = plt.figure(13) 
     plt.clf() 
     plt.plot(self.dat) 
     plt.ioff() 

def main(): 
    app = QtGui.QApplication(sys.argv) 
    ex = Example() 
    sys.exit(app.exec_()) 

if __name__ == '__main__': 
    main()