I'm trying to left align ticks of the y axis of a plot and copied the code on the matplotlib documentation but I get an error message AttributeError: 'AxesSubplot' object has no property 'axes_class'
with matplotlib==3.3.3
and Python 3.8.7
import matplotlib.pyplot as plt
import mpl_toolkits.axisartist as axisartist
def setup_axes(fig, pos):
ax = fig.add_subplot(pos, axes_class=axisartist.Axes)
ax.set_yticks([0.2, 0.8], labels=["short", "loooong"])
ax.set_xticks([0.2, 0.8], labels=[r"$\frac{1}{2}\pi$", r"$\pi$"])
return ax
fig = plt.figure(figsize=(3, 5))
fig.subplots_adjust(left=0.5, hspace=0.7)
ax = setup_axes(fig, 311)
ax.set_ylabel("ha=right")
ax.set_xlabel("va=baseline")
ax = setup_axes(fig, 312)
ax.axis["left"].major_ticklabels.set_ha("center")
ax.axis["bottom"].major_ticklabels.set_va("top")
ax.set_ylabel("ha=center")
ax.set_xlabel("va=top")
ax = setup_axes(fig, 313)
ax.axis["left"].major_ticklabels.set_ha("left")
ax.axis["bottom"].major_ticklabels.set_va("bottom")
ax.set_ylabel("ha=left")
ax.set_xlabel("va=bottom")
plt.show()
Edit
I tried to remove the mpl_toolkits.axisartist
and changed the line ax.axis["left"].major_ticklabels.set_ha("left"
to ax.yaxis.major_ticklabels.set_ha("left")
as mentioned in the comment but got the error message:
AttributeError: 'YAxis' object has no attribute 'major_ticklabels'
import matplotlib.pyplot as plt
#import mpl_toolkits.axisartist as axisartist
def setup_axes(fig, pos):
# ax = fig.add_subplot(pos, axes_class=axisartist.Axes)
ax = fig.add_subplot(pos)
ax.set_yticks([0.2, 0.8], labels=["short", "loooong"])
ax.set_xticks([0.2, 0.8], labels=[r"$\frac{1}{2}\pi$", r"$\pi$"])
return ax
fig = plt.figure(figsize=(3, 5))
fig.subplots_adjust(left=0.5, hspace=0.7)
ax = setup_axes(fig, 311)
#ax.axis["left"].major_ticklabels.set_ha("left")
#ax.axis["bottom"].major_ticklabels.set_va("bottom")
ax.yaxis.major_ticklabels.set_ha("left")
#ax.axis.major_ticklabels.set_va("bottom")
ax.set_ylabel("ha=left")
ax.set_xlabel("va=bottom")
plt.show()