I'm creating very simple charts with matplotlib / pylab Python module. The letter "y" that labels the Y axis is on its side. You would expect this if the label was longer, such as a word, so as not to extend the outside of the graph to the left too much. But for a one letter label, this doesn't make sense, the label should be upright. My searches have come up blank. How can I print the "y" horizontally?
Asked
Active
Viewed 1e+01k times
2 Answers
138
It is very simple. After plotting the label, you can simply change the rotation:
import matplotlib.pyplot as plt
plt.ion()
plt.plot([1, 2, 3])
plt.ylabel("y", rotation=0)
# or
# h = plt.ylabel("y")
# h.set_rotation(0)
plt.draw()
Nico Schlömer
- 46,467
- 24
- 178
- 218
Jens Munk
- 4,378
- 1
- 22
- 37
-
1Great, that does the job. Thank you! – Karl D Dec 28 '14 at 00:54
-
19On a side note, you can pass the rotation directly into `plt.ylabel`. (e.g. `plt.ylabel('y', rotation=0)`) – Joe Kington Dec 28 '14 at 03:27
-
Hey that's elegant. Thanks, Joe. – Karl D Dec 28 '14 at 18:54
-
2That's right. I didn't look into the documentation, simply used the dot completion on the handle – Jens Munk Dec 30 '14 at 15:20
107
Expanding on the accepted answer, when we work with a particular axes object ax:
ax.set_ylabel('abc', rotation=0, fontsize=20, labelpad=20)
Note that often the labelpad will need to be adjusted manually too — otherwise the "abc" will intrude onto the plot.
From brief experiments I'm guessing that labelpad is the offset between the bounding box of the tick labels and the y-label's centre. (So, not quite the padding the name implies — it would have been more intuitive if this was the gap to the label's bounding box instead.)
Evgeni Sergeev
- 20,806
- 16
- 98
- 121
-
48for better clarity you might consider `rotation='horizontal'`. Also, instead of choosing an arbitrary `labelpad` (and then needing to adjust based on results), you can add the argument `ha='right'`, where `ha` is a convenient abbreviation for the `horizontalalignment` keyword. – NauticalMile Mar 14 '17 at 16:02
-
8
-
How to set the orientation without changing existing labels? This is required when the labels have been set by say an external module `librosa.display.specshow()`. – mins Apr 02 '21 at 21:06