Problem mit objektorientiertem Programmieren

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
alex1990ge
User
Beiträge: 22
Registriert: Freitag 26. Juli 2013, 10:04

Liebe Community,

Ich arbeite mich gerade durch ein Python-Tutorial. Dabei wird gerade der Unterschied zwischen 'normalem' und objektorientiertem Programmieren erläutert.
Daher soll auf zwei verschiedene Arten ein Plot erstellt werden:

Code: Alles auswählen

plt.figure()
plt.subplot(1,1,1)
plt.plot([1,2,3,4])
Das funktioniert auch wunderbar.
Wenn ich dann allerdings das gleiche mit Objektbezeichnungen mache:

Code: Alles auswählen

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.plot([1,2,3,4])
dann wird lediglich "plt.figure()" korrekt ausgeführt. Die restlichen Eingabezeilen liefern gar kein Ergebnis.

Zur Info: Ich arbeite mit Python 2.7 und tippe die Befehle direkt ins iPython. Das Pyplot-Paket habe ich als plt importiert.

Für Erläuterung, Hinweise und Hilfestellungen wäre ich euch sehr dankbar.
Viele Grüße
Alex
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@alex1990ge: was meinst Du mit korrekt ausgeführt? Gibt es eine Fehlermeldung? Wenn ja, wie lautet diese?
Was erwartest Du als Ergebnis? Dir ist klar, dass unter IPython nur das Ergebnis von Ausdrücken als Out[xx] ausgegeben wird und dass bei Zuweisungen keine Ausgabe erfolgt. Das vorausgesetzt, liefert nur die letzte Zeile (ax.plot ...) ein Out[xx], da diese als einzige keine Zuweisung ist.
alex1990ge
User
Beiträge: 22
Registriert: Freitag 26. Juli 2013, 10:04

Danke für deine Antwort.

bei Zeile 1 wird ein leeres Objekt mit dem Namen "Figure 1" erstellt.
bei Zeile 2 passier überhaupt nichts.
bei Zeile 3 kommt wie du schon sagtest ein Out[<matplotlib.lines.Line2D at 0x7f87b01f0150>]

Das bei Zuweisungen nichts passiert leuchtet mir ein. Wieso wird dann aber ein Objekt erstellt wenn ich die 1. Zeile ausführe?
Und: wieso wird ax.plot... nicht direkt ausgeführt, sondern mir nur das Ergebnis als Textausgabe (Out[xx]) angezeigt? Ist das immer so?
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@alex1990ge: ja, das ist immer so. Du bekommst hier ein Line2D-Objekt zurück, dessen Parameter Du ja noch anpassen könntest. Erst bei fig.show() wird auch tatsächlich etwas angezeigt; und zwar sowohl bei Variante 1 als auch bei Variante 2
alex1990ge
User
Beiträge: 22
Registriert: Freitag 26. Juli 2013, 10:04

Bei Variante 1, also den ganzen Eingaben mit plt.xxx wurde bei mir immer direkt nach der Eingabe dieser Zeile der Plot verändert, ohne dass ich fig.show() eingeben musste. Deswegen die Verwirrung ^^

Vielen Dank für die Aufklärung!
Antworten