2012-03-25 104 views
1

所以我試圖用Python的matplotlib繪製2個不同的相同尺寸的數組。這是我目前擁有的代碼:Python簡單的線性繪圖

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 

我試圖繪製與x軸是x和Y軸是kbararray(這只是在迴路計算的值相同的陣列)的簡單線條。我嘗試使用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 

從我研究這個錯誤通常會出現,如果你試圖繪製兩個不同維度的數組,但我相信我的維度是相同的,對吧?那麼,爲什麼我會得到這個錯誤?對不起,如果這是一個基本的問題/其他地方回答,但我找不到任何東西。謝謝。

+0

爲什麼'(P ** 1)'..另外,爲什麼計算循環相同的值?計算一次。另外,你可以通過打印出len(x)和len(kbarray)來檢查'x'和'kbarray'的尺寸。這可能有助於找出問題。 – 2012-03-25 19:31:55

回答

0

的問題是在這條線:

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

你看,你正在聲明kbararray具有形狀(1, 45),這是不一樣的形狀x陣列,它具有形狀(,45)。 如果你想kbararray具有相同的形狀x,你可以使用:

kbararray=ones_like(x)*kbar 
1

您可以在運行時通過打印xkbararray的形狀來驗證它們是相同的形狀。你叫plot權利之前,添加這些行:

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

如果形狀是不同的,你有問題,應該檢查你實際上是密謀什麼你認爲你繪製。