我想用matplotlib動畫在PyQT GUI上顯示傳感器數據。 我已經有一個工作曲線圖,獲取更新我每次收到新的傳感器值從外部源與此代碼時間:動態更新matplotlib中的多個軸
def __init__(self):
self.fig = Figure(figsize=(width, height), dpi=dpi)
self.axes = self.fig.add_subplot(111)
self.axes.grid()
self.xdata = []
self.ydata = []
self.entry_limit = 50
self.line, = self.axes.plot([0], [0], 'r')
def update_figure_with_new_value(self, xval: float, yval: float):
self.xdata.append(xval)
self.ydata.append(yval)
if len(self.xdata) > self.entry_limit:
self.xdata.pop(0)
self.ydata.pop(0)
self.line.set_data(self.xdata, self.ydata)
self.axes.relim()
self.axes.autoscale_view()
self.fig.canvas.draw()
self.fig.canvas.flush_events()
我現在要擴展的情節,顯示具有相同x軸的另一數據系列。我試圖有以下補充上述初始化代碼來實現這一點:
self.axes2 = self.axes.twinx()
self.y2data = []
self.line2, = self.axes2.plot([0], [0], 'b')
並在update_figure_with_new_value()函數(用於測試目的我只是試圖1添加到利用yval,我會延伸的所述PARAMS後來功能):
self.y2data.append(yval+1)
if len(self.y2data) > self.entry_limit:
self.y2data.pop(0)
self.line2.set_data(self.xdata, self.ydata)
self.axes2.relim()
self.axes2.autoscale_view()
而不是得到的情節兩條線應該有相同的運動,但只是一個我得到的垂直線爲第二個圖線(藍色),但轉移。第一個軸(紅色)保持不變並且沒問題。
如何使用matplotlib更新多軸讓他們顯示正確的價值觀?
我使用python 3.4.0和matplotlib 2.0.0。
我把所有的東西放在和你的例子相同的順序,現在它工作正常。之後,我嘗試撤消行動以獲得更多關於造成此行爲的信息,但現在我無法再重現這一點。感謝您的代碼示例。 –
是的,這就是[mcve]的全部重點。通過創建一個你經常已經解決的問題,如果沒有,這使得找到問題更加容易。下次你可能會記住這一點。 ;-) – ImportanceOfBeingErnest