2009-08-28 5 views
13

Wie kann ich den Ursprung eines Matplotlib-Diagramms in der oberen linken Ecke spiegeln - im Gegensatz zum Standard unten links? Ich verwende matplotlib.pylab.plot, um das Diagramm zu erstellen (wenn es jedoch eine andere flexiblere Zeichenroutine gibt, lassen Sie es mich bitte wissen).Matplotlibkoord. sys Herkunft nach oben links

Ich bin auf der Suche nach dem Äquivalent des Matlab-Befehls: axis ij;

Auch habe ich ein paar Stunden surfen matplotlib Hilfe und google aber nicht mit einer Antwort gekommen. Einige Informationen darüber, wo ich die Antwort hätte nachschlagen können, wären hilfreich.

Antwort

8

Für ein Bild- oder Konturdiagramm können Sie das Schlüsselwort origin = None | 'lower' | 'upper' verwenden und für ein Liniendiagramm können Sie die Ylimits hoch auf niedrig setzen.

from pylab import * 
A = arange(25)/25. 
A = A.reshape((5,5)) 

figure() 
imshow(A, interpolation='nearest', origin='lower') 

figure() 
imshow(A, interpolation='nearest') 

d = arange(5) 
figure() 
plot(d) 
ylim(5, 0) 

show() 
+1

Direkte Einstellung der Achsengrenzen mit "ylim ([y1, y2])" oder "axis ([x1, x2, y1, y2])" funktioniert. Es ist nicht vollständig generisch, aber ich bin mir sicher, dass ich etwas herausfinden kann, um es generisch zu machen. Vielleicht der oben genannte Befehl setp. Danke für die Hilfe! – Nate

+0

Stichwort Trick löste mein Problem. +1 – heltonbiker

12

axis ij macht nur die Y-Achse nach unten statt nach oben, oder? Wenn ja, dann könnte matplotlib.axes.invert_yaxis() alles sein, was Sie brauchen - aber ich kann das jetzt nicht testen.

Wenn das nicht funktioniert, fand ich a mailing post darauf hindeutet, dass

setp(gca(), 'ylim', reversed(getp(gca(), 'ylim'))) 

könnte tun, was Sie axis ij ähneln soll.

+0

Ich konnte nie invert_yaxis() zu arbeiten. Wenn es so wäre, wäre das ideal. Von dem, was ich zusammenfügen könnte, sollte der Befehl setp funktionieren, aber "reversed" gibt einen Iterator zurück. Ich konnte es nicht bekommen, stattdessen eine Sequenz zurückzugeben, obwohl ich noch relativ neu dazu bin. So kann es einfach sein. – Nate

4

Nachfolgend ist ein grundlegender Weg, um diesen

ax=pylab.gca() 

ax.set_ylim(ax.get_ylim()[::-1]) 
10

Den einfachste Weg ist, zu erreichen, zu verwenden: nur für imshow

plt.gca().invert_yaxis() 

Origin arbeitet.

+0

Dies funktionierte gut, wenn Karten mit Cartopy auf Satellitenbilder gesetzt wurden. Beachten Sie, dass dies zumindest in meinem Anwendungsfall nach der 'imshow()' ausgeführt werden muss. Danke! – kevinmicke

3

Diese

plt.ylim(max(plt.ylim()), min(plt.ylim())) 

hat einen Vorteil gegenüber diesem

plt.gca().invert_yaxis() 

und ist, wenn Sie im interaktiven Modus sind und Sie immer wieder die gleichen Grundstück Grundstück (vielleicht mit aktualisierten Daten und mit einem Haltepunkt nach die Grafik) die y-Achse wird nicht jedes Mal invertieren.

Verwandte Themen