2014-12-27 2 views
29

Ich erstelle sehr einfache Diagramme mit Matplotlib/Pylab Python-Modul. Der Buchstabe "y", der die Y-Achse kennzeichnet, befindet sich auf der Seite. Sie würden dies erwarten, wenn das Label länger wäre, wie zum Beispiel ein Wort, um das Äußere des Graphen nicht zu sehr nach links zu verlängern. Aber für ein Ein-Buchstaben-Etikett macht das keinen Sinn, das Etikett sollte aufrecht stehen. Meine Suchen sind leer. Wie kann ich das "y" horizontal drucken?Wie drucke ich die Y-Achse horizontal in einem Matplotlib/Pylab-Diagramm?

Antwort

50

Es ist sehr einfach. Nachdem das Etikett aufgetragen, können Sie einfach die Rotation ändern:

from matplotlib import pyplot as plt 
plt.ion() 
plt.plot([1,2,3]) 
h = plt.ylabel('y') 
h.set_rotation(0) 
plt.draw() 

Alternativ können Sie die Rotation als Argument übergeben, das heißt

plt.ylabel('y',rotation=0) 
+0

Großartig, das macht den Job. Vielen Dank! –

+9

Als Randnotiz können Sie die Rotation direkt in 'plt.ylabel' übergeben. (z.B. 'plt.ylabel ('y', rotation = 0)') –

+0

Hey, das ist elegant. Danke, Joe. –

19

auf der akzeptierte Antwort Aufweiten, wenn wir mit einer bestimmten Arbeit Achsen Objekt ax:

ax.set_ylabel('abc', rotation=0, fontsize=20, labelpad=20) 

Beachten Sie, dass oft müssen die labelpad manuell zu angepasst werden - sonst wird die „abc“ wird intrud e auf das Grundstück.

Aus kurzen Experimenten vermute ich, dass labelpad der Versatz zwischen der Bounding Box der Tick-Labels und der Y-Label-Mitte ist. (So, nicht ganz die Polsterung, die der Name impliziert - es wäre intuitiver gewesen, wenn dies stattdessen die Lücke zur Begrenzungsbox des Etiketts gewesen wäre.)

+9

aus Gründen der besseren Übersicht verwendet, die Sie als 'rotation = 'horizontal' betrachten könnten. Anstatt ein beliebiges "Labelpad" zu wählen (und dann basierend auf den Ergebnissen anpassen zu müssen), können Sie das Argument 'ha = 'rechts' hinzufügen, wobei' ha' eine geeignete Abkürzung für das Schlüsselwort 'horizontalignment' ist. – NauticalMile