Seite 1 von 1

Plotten von Arrays

Verfasst: Donnerstag 8. August 2013, 14:25
von Marleb
Wenn ich Q plotten möchte bekomme ich in Zeile "ax1.plot(x, Q, color='g')" einen "ValueError("x and y must have the same first dimension).

Ich vermute das problem ist das Q mir (Stelle: Wert) angezeigt wird, während x nur die Anzahl der Werte ist.

Wie kann ich sagen, dass bei Q nur der Wert geplottet wird?

Code: Alles auswählen

import csv
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

dF = pd.read_csv("Daten_korrigiert.csv", sep=';')
xresult = {}
yresult = {}
Q = {}
P = {}

a = 1000
b = 1.1
c = 12
d=3.6 
e=60

for i in range(len(dF.x)-1):
	yresult[i] = dF.y[i]
	xresult[i] = dF.x[i+1]-dF.x[i]
	Q[i]=xresult[i]*a*b*(yresult[i]-c)
	P[i]= (Q[i]*d*e)/a

fig = plt.figure()
ax1 = fig.add_subplot(111)
x = np.linspace (1,len(xresult),len(xresult),True)
print x
ax1.plot(x, Q, color='g')
plt.xlabel('Minuten [min]')
plt.ylabel('Q [kW]')
#plt.ylim(0, 3000)
plt.show ()
plt.savefig("Q.jpg")

Re: Plotten von Arrays

Verfasst: Donnerstag 8. August 2013, 19:59
von Sr4l
Du hast dictionarys verwendet.

Code: Alles auswählen

xresult = {}; yresult = {}; Q = {}; P = {}
Du wolltest sicher Listen

Code: Alles auswählen

xresult = []; yresult = []; Q = []; P = []
Listen, im Gegensatz zu dicts, sortiert du kannst allerdings nicht einfach auf einen Index schreiben, welchen es noch nicht gibt. Du musst die Liste also von Anfang an erzeugen, oder aber Elemente der Liste hinzufügen (besser).

Aus

Code: Alles auswählen

yresult[i] = dF.y[i]
Wird dann

Code: Alles auswählen

yresult.append(dF.y[i])
usw.

Grüße Lars

Re: Plotten von Arrays

Verfasst: Freitag 9. August 2013, 00:21
von Sirius3
Du wolltest sicher weder Listen noch Dictionaries noch for-Schleifen.
Da Du offensichtlich numpy verwendest, solltest Du es auch benutzen und mit Vektoren rechnen:

Code: Alles auswählen

Q = (dF.x[1:]-dF.x[:-1])*(a*b)*(dF.y-c)
P = Q * (d*e/a)
…
ax1.plot(Q, color='g')

Re: Plotten von Arrays

Verfasst: Freitag 9. August 2013, 11:05
von Marleb
@Sr4l
danke, die liste wars