在创建具有多个垂直轴(沿着http://matplotlib.org/examples/axes_grid/demo_parasite_axes2.html的线)的图形时,我试图在水平轴上旋转标签。但是,应该做的代码似乎没有做任何事情。
例如:
from mpl_toolkits.axes_grid1 import host_subplot
import mpl_toolkits.axisartist as AA
import matplotlib.pyplot as plt
num_sub_axes = 3
host = host_subplot(111, axes_class=AA.Axes)
plt.subplots_adjust(left=0.05, right=max(0.75, 1-0.075*num_sub_axes))
host.axis["left"].toggle(all=False)
for sub_ax_idx in range(num_sub_axes):
new_ax = host.twinx()
new_fixed_axis = new_ax.get_grid_helper().new_fixed_axis
new_ax.axis["right"] = new_fixed_axis(loc="right", axes=new_ax, offset=(45 * sub_ax_idx, 0))
new_ax.axis["right"].toggle(all=True)
line, = new_ax.plot([0, 1, 2], [(sub_ax_idx+1)**2, (sub_ax_idx+1)**2.5, (sub_ax_idx+1)**3], label=str(sub_ax_idx))
new_ax.axis["right"].label.set_color(line.get_color())
new_ax.axis["right"].major_ticklabels.set_color(line.get_color())
new_ax.axis["right"].minor_ticklabels.set_color(line.get_color())
host.set_xticks([0, 1, 2])
host.set_xticklabels(["One", "Two", "Three"], rotation=-45, horizontalalignment="right", verticalalignment="bottom")
host.legend()
plt.draw()
plt.show()
请注意,水平标签(" One"," Two"," Three")显然是水平的,即使我使用了rotation=-45
在我对set_xticklabels
的调用中的关键字参数,如文档中所述:http://matplotlib.org/devdocs/api/_as_gen/matplotlib.axes.Axes.set_xticklabels.html
我怀疑这可能与这不仅仅是常规axes
对象这一事实有关。
但如果不是如上所述,我该如何旋转这些标签?
答案 0 :(得分:0)
在您的情况下,轴不再是法线轴,而是axisartist container内的轴。正如Goyo在一个加权注释中指出的那样,这个容器的方法可能与普通轴方法不同。
在这种情况下,您需要设置主要刻度标签的旋转
host.axis["bottom"].major_ticklabels.set_rotation(-45)