2015-05-06 78 views
2

我正在研究一個需要使用matplotlib進行連續3D繪圖的項目。 整個項目是複雜的,但我用這個簡單的例子概括了問題:使用matplotlib連續3D繪圖

import matplotlib as mpl 
from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 
import time 


count=0 
fig = plt.figure() 
ax = fig.gca(projection='3d') 
z = [0] 
x = [0] 
y = [0] 
plt.show() 
while True: 
    count +=1 
    x.append(count) 
    x.append(count) 
    x.append(count) 
    ax.plot(x, y, z) 
    time.sleep(1) 
    plt.draw() 
在這段代碼

,我試圖重繪新的X,Y,Z值的3D線。但沒有任何反應! 任何人都可以幫忙嗎?

回答

1

我不知道爲什麼它不工作,你編碼方式,但我可以得到它像這樣工作:

import matplotlib as mpl 
from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 
import time 
import numpy 


count=0 
fig = plt.figure() 
ax = fig.gca(projection='3d') 
z = [0] 
x = [0] 
y = [0] 

plt.ion() ### 

plt.show() 
while True: 
    count +=1 
    x.append(count) 
    y.append(count**2) # 
    z.append(count**3) # just for eye-candy 

    ax.plot(numpy.array(x), ### 
      numpy.array(y), ### 
      numpy.array(z)) ### 

    time.sleep(1) 
    plt.draw() 

ion部分是有道理的,但轉換您的序列陣列是這是必要的,因爲我得到一個錯誤,因爲(顯然)矩陣乘法是不可能的簡單的序列:

(...) 
File "C:\Python27\lib\site-packages\mpl_toolkits\mplot3d\proj3d.py", line  158, in proj_transform_vec 
    vecw = np.dot(M, vec) 
TypeError: can't multiply sequence by non-int of type 'float' 
+0

謝謝:),但是當我運行修改後的代碼,3D空間出現約0.5秒,消失並得到這個錯誤: https:/ /www.imageupload.co.uk/images/2015/05/06/Capture1.png – Qutaiba

+0

噢,對不起......我重新輸入了一個你的錯字:你正在使用'x.append(count)'三次添加到x,y和z)。我糾正了我的代碼,現在它似乎工作。 – heltonbiker

+0

非常感謝,最後它的工作^ _ ^ – Qutaiba