2012-03-25 16 views
1

Also ich versuche, 2 verschiedene Arrays der gleichen Dimensionen mit Pythons Matplotlib zu plotten. Dies ist der Code, den ich derzeit habe:Python einfach linear plotten

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 

Ich versuche, eine einfache Linie zu zeichnen, wobei die x-Achse x zu sein und die y-Achse zu sein kbararray (die in der Schleife berechnet nur ein Array mit dem gleichen Wert ist). Ich habe versucht, dieses Stück matplotlib verwendet, die in der Vergangenheit für meine anderen Plots gearbeitet hat:

plot(x,kbararray) 

Aber ich halte am Ende recieveing ​​diese Fehlermeldung:

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 

Von dem, was ich dieser Fehler recherchiert habe kommt normalerweise auf, wenn Sie versuchen, 2 Arrays mit verschiedenen Dimensionen zu plotten, aber ich bin mir sicher, dass sie die gleiche Dimension haben, oder? Warum sollte ich diesen Fehler bekommen? Entschuldigung, wenn das eine grundlegende Frage ist/wo anders beantwortet, aber ich konnte nichts finden. Vielen Dank.

+0

Warum '(p ** 1)' .. Auch, warum den gleichen Wert in einer Schleife berechnen? Berechnen Sie es einmal. Sie können auch die Dimensionen von 'x' und' kbarray' überprüfen, indem Sie 'len (x)' und 'len (kbarray)' ausdrucken. Dies könnte helfen, das Problem zu lösen. –

Antwort

0

Das Problem ist in dieser Zeile:

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

Sie sehen, sind Sie kbararray als mit Form (1, 45) und erklären, die nicht die gleiche Form wie die x Array ist, die Form (,45) hat. Wenn Sie kbararray wollen die gleiche Form wie x haben, können Sie verwenden:

kbararray=ones_like(x)*kbar 
1

Sie können überprüfen, dass sie die gleiche Form haben, indem Sie zur Laufzeit die Form x und kbararray drucken. Kurz bevor Sie plot nennen, fügen Sie die folgenden Zeilen:

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

Wenn die Formen unterschiedlich sind, haben Sie ein Problem und sollte überprüfen, ob Sie tatsächlich Plotten, was Sie denken, dass Sie Plotten.