Matplotlib - Achsen

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.
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

``ax`` ist einen Achsenobjekt. Woher das kommt siehst du in dem Beispiel.

Lass dir mal deine Matplotlib-Version in der Konsole ausgeben. ``spines`` gibt es erst ab Version 0.99:

Code: Alles auswählen

>>> import matplotlib
>>> matplotlib.__version__
muhazz
User
Beiträge: 37
Registriert: Donnerstag 1. April 2010, 11:58

Version 0.99.1 spuckt er mir aus.
Das sollte dann ja funktionieren :)

Ich sehe auch, wo das Achsenobjekt herkommt, aber ich habe keine figure und möchte kein subplot - in meiner Situation weiß ich also nicht, wie ich den spines Befehl einbinden soll.
Ganz abgesehen davon, dass ich von objektorientierter Programmierung keine Ahnung habe und mir das alles einfach sehr oberflächlich zusammenreime, weiß ich nicht, an welches Objekt ich spines "dranhängen" soll (und einfach ohne Objekt geht auch nicht).
Ich habe da ein bisschen auf gut Glück rumprobiert, aber das hat alles nicht geklappt und ich glaube auch nicht, dass das irgendwie Sinn gemacht hat.

Also muss ich hier um ganz konkrete Hilfe bitten.
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

muhazz hat geschrieben:Ich sehe auch, wo das Achsenobjekt herkommt, aber ich habe keine figure und möchte kein subplot - in meiner Situation weiß ich also nicht, wie ich den spines Befehl einbinden soll.
Matplotlib erstellt automatisch eine figure- und subplot-Objekt, wenn keins vorhanden ist. Da du die Objekte jetzt brauchst, musst nun eimmal einen Namen dran binden um z.B. ``spines`` verwenden zu können. Wenn du matploblib verwenden möchtest, musst du dich auch mit dessen Grundlagen auseinander setzen wollen.

Wenn du ein Problem mit ``spines`` hast, poste doch bitte etwas Code, wo dein Problem auftaucht.
muhazz
User
Beiträge: 37
Registriert: Donnerstag 1. April 2010, 11:58

Der relevante Teil des Codes sieht jetz so aus:
http://paste.pocoo.org/show/208248/

Beim Aufruf von beispielsweise

Code: Alles auswählen

>>> rand(0+0j, 0.2+0.5j, 0.6+0.8j, 0.9+0.7j)
wird keine Fehlermeldung ausgegeben und es öffnet sich ein Fenster, das aber weiß bleibt. PC hängt und "keine Rückmeldung" des Ausgabe-Fensters.

Die einzige Änderungen ab der letzten funktionierenden Version war das Einfügen von Zeile 8-13.
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Versuche es mal mit ``plt.show()`` anstelle von ``fig.show()``.
muhazz
User
Beiträge: 37
Registriert: Donnerstag 1. April 2010, 11:58

Wunderbar, klappt. :D

Nun geht es nur noch um 2 Schönheitsfehler:
Ich möchte die Achsenbeschriftung (xlabel, ylabvl) verschieben. horizontalalignment bzw. verticalalignment hatten nicht den Einfluss, den ich vermutet habe.
Außerdem ist der subplot nicht quadratisch, ich kann allerdings keinen Grund dafür finden.

Der Code: http://paste.pocoo.org/show/208885/

Änderungen fanden wieder nur in "def darstellen" statt.
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Eventuell kann man bei den Default-Einstellungen die Positionen der Label verändern. Am einfachstes wäre es aber, wenn du stattdessen für die Label Text-Instanzen verwendest. Da ist die Position frei wählbar.

Mehr Kontrolle über den Subplot bekommst, wenn du in mit ``axes`` bzw. ``add_axes`` erzeugst. Zusätzlich kannst du mit dem Schlüsselwort ``figsize`` die Größe der Figure beeinflussen.
Antworten