After Thomas very helpfully fixed my issues making two parasite sub plots in this question, I'm now trying to rotate the x axis labels on the subplots.
Unfortunately, my modification to the example code here seems to have no effect on the x axis labels:
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import host_subplot
import mpl_toolkits.axisartist as AA
host = host_subplot(111, axes_class=AA.Axes)
plt.subplots_adjust(right=0.75)
par1 = host.twinx()
par2 = host.twinx()
offset = 60
new_fixed_axis = par2.get_grid_helper().new_fixed_axis
par2.axis["right"] = new_fixed_axis(loc="right",
axes=par2,
offset=(offset, 0))
par1.axis["right"].toggle(all=True)
par2.axis["right"].toggle(all=True)
host.set_xlim(0, 2)
host.set_ylim(0, 2)
host.set_xlabel("Distance")
host.set_ylabel("Density")
par1.set_ylabel("Temperature")
par2.set_ylabel("Velocity")
p1, = host.plot([0, 1, 2], [0, 1, 2], label="Density")
p2, = par1.plot([0, 1, 2], [0, 3, 2], label="Temperature")
p3, = par2.plot([0, 1, 2], [50, 30, 15], label="Velocity")
par1.set_ylim(0, 4)
par2.set_ylim(1, 65)
host.legend()
host.axis["left"].label.set_color(p1.get_color())
par1.axis["right"].label.set_color(p2.get_color())
par2.axis["right"].label.set_color(p3.get_color())
plt.xticks(rotation = 45) #<- The only change from the example
plt.draw()
plt.show()
gives un-rotated x axis labels in:
Although I've shown the plt.xticks(rotation = 45)
, I've also tried other ways that work with "conventional" matplotlib plots without success. Does anyone know if there is a way to do this, or am I just dealing with too much of a niche case? Maybe I should just figure out a way to live with using sub plots and no parasite axes?
Thanks a lot, Alex
Using plt. xticks(x, labels, rotation='vertical'), we can rotate our tick's label.
To rotate tick labels in a subplot, we can use set_xticklabels() or set_yticklabels() with rotation argument in the method. Create a list of numbers (x) that can be used to tick the axes. Get the axis using subplot() that helps to add a subplot to the current figure.
Most common method is by using invert_xaxis() and invert_yaxis() for the axes objects. Other than that we can also use xlim() and ylim(), and axis() methods for the pyplot object. To invert X-axis and Y-axis, we can use invert_xaxis() and invert_yaxis() function.
There are two ways to produce parasite axes:
Using the mpl_toolkits
axisartist
and axes_grid1
package, examples are
Using usual subplots and their spines. Examples are
Here you are using the first approach, which may be a bit unintuitive due to it using the special axes provided by the axisartist
toolkit.
Use the usual subplots approach for which all the usual ways of rotating ticklabels work just fine, e.g.
plt.setp(ax.get_xticklabels(), rotation=90)
In case you want to stick with the mpl_toolkits
approach you need to obtain the ticklabels from the axis
via axis["right"].major_ticklabels
,
plt.setp(par2.axis["bottom"].major_ticklabels, rotation=-135)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With