Plotten von Arrays

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Marleb
User
Beiträge: 22
Registriert: Montag 5. August 2013, 11:00

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")
Zuletzt geändert von Anonymous am Donnerstag 8. August 2013, 16:31, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

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
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

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')
Marleb
User
Beiträge: 22
Registriert: Montag 5. August 2013, 11:00

@Sr4l
danke, die liste wars
Antworten