Python简单的线性绘图

时间:2012-03-25 19:23:39

标签: python plot matplotlib

所以我试图用python的matplotlib绘制两个相同尺寸的不同数组。这是我目前的代码:

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)

但我最终还是收到了这条错误消息:

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个不同维度的数组,但我确信我的具有相同的维度,对吧?那么为什么我会收到这个错误?对不起,如果这是一个基本问题/在别处回答,但我找不到任何东西。感谢。

2 个答案:

答案 0 :(得分:1)

您可以通过在运行时打印xkbararray的形状来验证它们的形状是否相同。在致电plot之前,请添加以下行:

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

如果形状不同,则表示您遇到问题,应检查您是否正在绘制您认为正在绘制的内容。

答案 1 :(得分:0)

问题出在这一行:

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

您知道,您宣称kbararray具有(1, 45)形状,其形状与x数组形状(,45)的形状不同。 如果您希望kbararray具有与x相同的形状,则可以使用:

kbararray=ones_like(x)*kbar