2012-03-25 5 views
1

그래서 파이썬의 matplotlib을 사용하여 같은 치수의 2 개의 다른 배열을 플롯하려합니다. 나는 X- 축이 x 인과 y 축이 (루프에서 계산 같은 값의 단지 배열되는) kbararray되는 간단한 라인을 그릴려고파이썬 간단한 선형 플로팅

from numpy import * 
from pylab import * 
import matplotlib.pyplot as plt 
p, pdot, s400, dist=loadtxt("cc45list.txt", usecols=(1,2,3,4), unpack=True) 
for i in arange(0,45,1): 
k = (s400*(dist**2))/((p**1)*(pdot**0.5)) 
kbar=sum(k) 
var=abs(k-kbar) 
x=((p**1)*(pdot**0.5)) 
y=s400*(dist**2) 

kbararray=ones((1,45))*kbar 

: 이것은 내가 현재 가지고있는 코드입니다. 나는 내 다른 플롯에 대한 작업했던하기 matplotlib의이 비트를 사용하여 시도 :

plot(x,kbararray) 

하지만이 오류 메시지가 recieveing ​​결국 유지 :이 오류가 연구 한 바로는

Traceback (most recent call last): 
File "C:\PortablePython_1.1_py2.6.1\App\April_2010\graphing lines.py", line 3, in <module> 
plot (range(0,11),[9,4,5,2,3,5,7,12,2,3],'.-',label='sample1') 
File "C:\PortablePython_1.1_py2.6.1\App\Lib\site-packages\matplotlib\pyplot.py", line 2141, in plot 
ret = ax.plot(*args, **kwargs) 
File "C:\PortablePython_1.1_py2.6.1\App\Lib\site-packages\matplotlib\axes.py", line 3432, in plot 
for line in self._get_lines(*args, **kwargs): 
File "C:\PortablePython_1.1_py2.6.1\App\Lib\site-packages\matplotlib\axes.py", line 311, in _grab_next_args 
for seg in self._plot_args(remaining, kwargs): 
File "C:\PortablePython_1.1_py2.6.1\App\Lib\site-packages\matplotlib\axes.py", line 288, in _plot_args 
x, y = self._xy_from_xy(x, y) 
File "C:\PortablePython_1.1_py2.6.1\App\Lib\site-packages\matplotlib\axes.py", line 228, in _xy_from_xy 
raise ValueError("x and y must have same first dimension") 
ValueError: x and y must have same first dimension 

을 보통 서로 다른 차원의 배열 2 개를 표시하려고 시도하지만, 내 차원이 동일한 차원인지 확신합니다. 그렇다면 왜이 오류가 발생합니까? 미안 기본 질문/다른 곳에서 답변을했지만 아무것도 찾을 수 없습니다. 감사.

+0

왜'(P ** 1)'.. 또한, 왜 루프에서 같은 값을 계산? 한 번 계산하십시오. 또한'len (x)'와'len (kbarray)'를 출력하여'x'와''kbarray'의 크기를 검사 할 수 있습니다. 이것은 문제를 파악하는 데 도움이 될 수 있습니다. –

답변

0

문제는이 라인에있다 : 당신은, 당신은 (,45) 모양이있는 x 배열과 같은 모양없는 모양 (1, 45)을 가진 것으로 kbararray를 선언하고 참조

kbararray=ones((1,45))*kbar 

. 당신이 kbararrayx과 같은 형태를 가지고 싶다면 , 당신은 사용할 수 있습니다

kbararray=ones_like(x)*kbar 
1

xkbararray의 모양을 런타임에 인쇄하여 동일한 모양인지 확인할 수 있습니다. 당신이 plot를 호출 직전, 다음 줄을 추가

print 'Shape of x:', x.shape 
print 'Shape of kbararray:', kbararray.shape 

모양이 다른 경우, 당신은 문제가 있다면 당신은 실제로 당신이 음모를 꾸미고 있다고 생각 어떤 음모를 꾸미고 있는지 확인해야합니다.