2013-01-10 28 views
1

我有上現在雖然這個問題的一次重大挫折...matplotlib實時直線

import numpy as np 
import matplotlib.pyplot as plt 

plt.ion() 
fig = plt.figure(1) 
ax = fig.add_subplot(111) 
ax.set_title("linear realtime") 
line, = ax.plot([],[]) 

i = 0 
while (i < 1000): 
     #EDIT: 
     # this is just sample data, but I would eventually like to set data 
     # where it can be floating numbers... 
     line.set_data(i,i)    
     fig.canvas.draw() 
     i += 1 

我試圖繪製實時的直線,但我無法拿出結果。提前致謝。到目前爲止,我有一個數字,但沒有畫在畫布上。

編輯:

有趣的....我現在能夠繪製就行了點,但現在,我無法展現每個點之間的連接......我也注意到,如果你刪除KO - 當它被繪製時......沒有任何東西出現,有人知道爲什麼嗎?

import numpy as n 
import pylab as p 
import time 

x=0 
y=0 
p.ion() 
fig=p.figure(1) 
ax=fig.add_subplot(111) 
ax.set_xlim(0,10) 
ax.set_ylim(0,10) 
line,=ax.plot(x,y,'ko-') 
for i in range(10): 
    x = i 
    y = i 
    line.set_data(x,y) 
    p.draw() 

回答

2

在您的循環中添加一個p.pause(.001)。您需要留出時間讓gui事件循環觸發並更新顯示。

這與issue #1646有關。

你有另一個問題是,當你做set_data它替換繪製與xy傳入的數據,而不是追加到已存在的數據。 (要清楚地看到這一點,請使用p.pause(1))刪除'ko-'時,默認情況下沒有標記,並且只有一條線連接點,因此您正在繪製一個點,因此沒有任何顯示。

我想你打算寫這樣的:

x=0 
y=0 

fig=plt.figure(1) 
ax=fig.add_subplot(111) 
ax.set_xlim(0,10) 
ax.set_ylim(0,10) 
line,=ax.plot(x,y,'ko-') 
for i in range(10): 
    x = np.concatenate((line.get_xdata(),[i])) 
    y = np.concatenate((line.get_ydata(),[i])) 
    line.set_data(x,y) 
    plt.pause(1) 
+0

謝謝你的投入,我想補充說,但問題,即兩分,除去ko-仍然存在的之間的連接。我甚至嘗試在暫停中添加更高的值。 – freedom

+0

@ user1967873請參閱編輯 – tacaswell