2014-12-27 11 views
29

Tworzę bardzo proste wykresy z modułem Python matplotlib/pylab. Litera "y" oznaczająca oś Y znajduje się po jej stronie. Można by się tego spodziewać, gdyby etykieta była dłuższa, na przykład słowo, aby nie przedłużać zbytnio poza wykresem w lewo. Ale w przypadku etykiety jednoliterowej to nie ma sensu, etykieta powinna być wyprostowana. Moje wyszukiwania są puste. Jak mogę wydrukować "y" w poziomie?Jak wydrukować etykietę osi Y w poziomie na wykresie matplotlib/pylab?

Odpowiedz

50

To bardzo proste. Po kreślenia etykietę, można po prostu zmienić obrotów:

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

Alternatywnie, można przekazać rotację jako argument, czyli

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

Świetnie, to się robi. Dziękuję Ci! –

+9

Na marginesie, możesz przekazać obrót bezpośrednio do 'plt.ylabel'. (np. 'plt.ylabel ('y ', obrót = 0)') –

+0

Hej, to jest eleganckie. Dzięki, Joe. –

19

Rozwijając przyjętą odpowiedzi, gdy pracujemy z szczególna osie obiektów ax:

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

Zauważ, że często labelpad będą musiały być regulowane ręcznie też - inaczej „abc” będzie intrud e na działkę.

Z krótkich eksperymentów domyślam się, że labelpad jest przesunięciem między obwiednią etykiet zaznaczających i centrum etykiety Y. (Tak więc, nie do końca wypełnienie to sugeruje nazwa - byłoby bardziej intuicyjne, gdyby była to luka do ramki ograniczającej etykiety.)

+9

dla lepszej przejrzystości, którą możesz rozważyć 'rotation = 'horizontal''. Ponadto, zamiast wybierać dowolny "labelpad" (a następnie wymagać dostosowania w oparciu o wyniki), możesz dodać argument "ha = 'right'', gdzie' ha' jest wygodnym skrótem słowa kluczowego 'horizontalalignment'. – NauticalMile

Powiązane problemy