2012-10-23 3 views
1

2x1 행렬의 n 개의 결과로 나타나는 행렬에 대해 n-operations을 수행합니다. 목록에 추가하고 x, y 좌표로 점으로 플롯하려고합니다. 나는 nx2 ndarray로 끝내고 [:0][:1]을 음모를 꾸미려고 numpy.array로 변환해야한다는 것을 알았습니다. 내가 결과를 인쇄 할 때 나는 공백을 그리기 위해 노력할 때 모든 것이 정확하다고 생각한다. 나는 ndarrays가 쉼표로 구분하지 않고 그것을 해석하는 방법을 모르겠다는 것을 알아 차렸다. 내 코드는 다음과 같이 보입니다 :음모를 꾸미기 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()  

정상적인 플롯의 숫자는 공백이 아닙니다. 나는 당신이 찾고있는 선 스타일의 어떤 종류의 확실하지 않다

답변

2

NX2 행렬의 형태로 가지고 ndarrays을 플롯하는 방법을 찾을 수없는,하지만 당신이, 이는 linestyle을 변경 한 경우는 뭔가가 표시됩니다

linestyle='-' 

또는, 데이터 포인트가 x 표시 참조하고자하는 경우, 그냥 키워드 linestyle 제거 :

pl.plot(np.array(XsavedArr[:,0]),np.array(XsavedArr[:,1]), 
     'x-',label = 'Xsaved') 
관련 문제