autofmt_xdate删除所有子图的x轴标签

lan*_*uze 9 python matplotlib

我用它autofmt_xdate以可读的方式绘制长x轴标签.问题是,当我想要组合不同的子图时,其他子图的x轴标记消失了,我不喜欢下图中最左边的子图(两行高).有没有办法防止autofmt_xdate淬火其他x轴标签?或者还有另一种旋转标签的方法吗?正如你所看到的那样,我也进行了实验xticks和"旋转",但结果并不令人满意,因为标签围绕它们的中心旋转,导致标签混乱.

产生以下情节的脚本:

from matplotlib import pyplot as plt
from numpy import arange
import numpy
from matplotlib import rc

rc("figure",figsize=(15,10))
#rc('figure.subplot',bottom=0.1,hspace=0.1)
rc("legend",fontsize=16)
fig = plt.figure()


Test_Data = numpy.random.normal(size=20)

fig = plt.figure()
Dimension = (2,3)
plt.subplot2grid(Dimension, (0,0),rowspan=2)
plt.plot(Test_Data)
plt.subplot2grid(Dimension, (0,1),colspan=2)
for i,j in zip(Test_Data,arange(len(Test_Data))):
    plt.bar(i,j)
plt.legend(arange(len(Test_Data)))
plt.subplot2grid(Dimension, (1,1),colspan=2)
xticks = [r"%s (%i)" % (a,b) for a,b in zip(Test_Data,Test_Data)]
plt.xticks(arange(len(Test_Data)),xticks)
fig.autofmt_xdate()
plt.ylabel(r'$Some Latex Formula/Divided by some Latex Formula$',fontsize=14)
plt.plot(Test_Data)
#plt.setp(plt.xticks()[1],rotation=30)
plt.tight_layout()
#plt.show()
Run Code Online (Sandbox Code Playgroud)

由脚本创建的图

sod*_*odd 10

这实际上是该autofmt_xdate方法的一个特征.从autofmt_xdate方法的文档:

日期刻度标签经常重叠,因此旋转它们并右对齐它们很有用.此外,常见的用例是具有共享xax的多个子图,其中x轴是日期数据.tick标签通常很长,它有助于在底部子图上旋转它们并在其他子图上关闭它们,以及关闭xlabels.

如果您只想旋转右下方子图的xticklabels,请使用

plt.setp(plt.xticks()[1], rotation=30, ha='right') # ha is the same as horizontalalignment
Run Code Online (Sandbox Code Playgroud)

这会将滴答标签旋转30度并右对齐它们(与使用时相同的结果autofmt_xdate)用于右下方子图,而另外两个子图保持不变.

  • 如果您正在处理子图,您可以直接从轴对象中读出刻度标签对象而不是依赖全局 plt.xticks 方法:`plt.setp(ax.get_xticklabels(), rotation=30, ha= '对')` (5认同)