2012-10-23 44 views
1

我對矩陣進行n次運算,導致輸出n個2x1矩陣。我將它們追加到一個列表中,並想用x,y座標繪製爲點。我發現我需要將它們轉換爲numpy.array,所以我完成了nx2 ndarray並且想要繪製[:0][:1]。當我打印結果時,當我嘗試繪製空白圖並完全沒有點時,所有內容似乎都是正確的。我注意到ndarrays被空格分隔而不是逗號,但不知道如何解釋它。我的代碼看起來像:plotting numpy.ndarray

import numpy as np 
import pylab as pl 

class GetMat(object): 
    def __init__(self): 
     self.Posp = np.matrix([[1,1],[1,1]]) 
     self.Velp = np.matrix([[1],[1]]) 
    def __call__(self): 
     self.Posp = self.Posp*np.random.random() 
     self.Velp = self.Velp*np.random.random() 
     return self.Posp,self.Velp 
    def __repr__(self): 
     return "Posp = \n%s \nVelp = \n%s" % (self.Posp,self.Velp) 
class Data(object): 
    def __init__(self): 
     self.x = 0 
    def __call__(self,P,V): 
     self.x = P*V 
     return self.x[0,0], self.x[1,0] 
    def __repr__(self): 
     return "x = %s" % self.x 

def Test(): 
    Nsamples = np.arange(0,10,1) 
    newMat = GetMat() 
    dataToPlot = Data() 
    Xsaved = [] 
    for i in range(len(Nsamples)): 
     z1,z2 = newMat() 
     position, velocity = dataToPlot(z1,z2) 
     Xsaved.append([position, velocity]) 
    print 'Xsaved = %s' % Xsaved 
    print 'tyep Xsaved %s' % type(Xsaved) 
    XsavedArr = np.array(Xsaved) 
    print 'XsavedArr %s' % XsavedArr 
    print 'tyep XsavedArr %s' % type(XsavedArr) 
    print 'XsavedArr[:,0] = %s' % XsavedArr[:,0] 
    print 'XsavedArr[:,1] = %s' % XsavedArr[:,1] 
    pl.plot(np.array(XsavedArr[:,0]),np.array(XsavedArr[:,1]), linestyle='x-',label = 'Xsaved') 
    pl.show() 

if __name__ == '__main__': 
    Test()  

我希望隨機數的正常情節不是空白。我找不到如何繪製有ndarrays在NX2矩陣的形式

回答

2

我不知道你在找什麼樣的路線風格,但你會看到東西如果你改變了線型到:

linestyle='-' 

或者,如果你想看到標有x數據點, 只是刪除關鍵字linestyle

pl.plot(np.array(XsavedArr[:,0]),np.array(XsavedArr[:,1]), 
     'x-',label = 'Xsaved') 
相關問題