Is there a simple way to put the y-axis label on the right-hand side of the plot? I know that this can be done for the tick labels using ax.yaxis.tick_right()
, but I would like to know if it can be done for the axis label as well.
One idea which came to mind was to use
ax.yaxis.tick_right()
ax2 = ax.twinx()
ax2.set_ylabel('foo')
However, this doesn't have the desired effect of placing all labels (tick and axis labels) on the right-hand side, while preserving the extent of the y-axis. In short, I would like a way to move all the y-axis labels from the left to the right.
It looks like you can do it with:
ax.yaxis.set_label_position("right")
ax.yaxis.tick_right()
See here for an example.
If you would like to follow the example given in matplotlib
and create a figure with labels on both sides of the axes but without having to use the subplots()
function, here is my solution :
from matplotlib import pyplot as plt
import numpy as np
ax1 = plt.plot()
t = np.arange(0.01, 10.0, 0.01)
s1 = np.exp(t)
plt.plot(t,s1,'b-')
plt.xlabel('t (s)')
plt.ylabel('exp',color='b')
ax2 = ax1.twinx()
s2 = np.sin(2*np.pi*t)
ax2.plot(t, s2, 'r.')
plt.ylabel('sin', color='r')
plt.show()
(sorry for resurrecting the question)
I know it's a dirty trick, but if you don't want to go down to axes handling and stay in plt
commands, you can use the labelpad
scalar argument to position your label to the right of the graph side. Works after a bit of trial and error, and the exact scalar value possibly (?) has to do with the dimensions of your figure size.
Example:
# move ticks
plt.tick_params(axis='y', which='both', labelleft=False, labelright=True)
# move label
plt.ylabel('Your label here', labelpad=-725, fontsize=18)