How to print Y axis label horizontally in a matplotlib / pylab chart?

Question:

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 By: Karl D

||

Answers:

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()
Answered By: Jens Munk

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.)

Answered By: Evgeni Sergeev
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.