2016-12-15 71 views
0

我有渲染matplot身影初始化函數:爲什麼我的數字不能顯示更新的地塊?

self.fig = plt.figure() 
    self.ax = self.fig.add_subplot(111) 
    self.line_1, = self.ax.plot([], [], 'r-') 
    g = FigureCanvasTkAgg(self.fig, master=self.ui) 

我在同一個班的另一個功能應該與新的點更新圖表:

count = 0 
def update(self, data): 
     self.count +=1 
     self.line_1.set_ydata(data) 
     self.line_1.set_xdata(self.count) 
     self.fig.canvas.draw() 

雖然空圖顯示,當我在其他地方調用更新函數(其中數據是浮點值,例如0.643)時,根本沒有任何反應。

我想用盡可能簡單的方式實現這一點 - 就像你可以告訴的一樣!乾杯。

+0

對於我來說,你應該設置在'set_xdata(some_list)'有些名單。現在你使用單一號碼,它不會工作。 – furas

回答

1

您正在將xdata設置爲單個數字,這可能不是您想要的。你可以嘗試,而不是

self.line_1.set_xdata(range(len(data))) 

假設你想給定列表中data違背自己的指數繪製。

另一個問題是,軸限制沒有更新,所以可能你的數據不會在眼前。你可以通過調用ax.relim()ax.autoscale_view()更新數據和重繪之間解決這一問題:

def update(self, data): 
     self.line_1.set_ydata(data) 
     self.line_1.set_xdata(range(len(data))) 
     self.ax.relim() 
     self.ax.autoscale_view() 
     self.fig.canvas.draw() 

事實上,它似乎是根據您使用的count和你有關數據是一個浮點值評論,你想用這個方法一次添加一個值。當你打電話給line_1.set_ydata()時,你不會追加一個值 - 你正在用給定的值替換整個ydata,顧名思義!要附加價值,做這樣的事情:(假設你有import numpy as np事先)

def append(self, val): 
     ydata = self.line_1.get_ydata() 
     ydata = np.append(ydata, val) 
     self.line_1.set_ydata(ydata) 
     self.line_1.set_xdata(range(len(ydata))) 
     self.ax.relim() 
     self.ax.autoscale_view() 
     self.fig.canvas.draw() 

+0

看起來不錯 - 很快會回覆你。 –

+0

你是英雄。謝謝。 –

相關問題