Python 在子地块(Pyplot、Matplotlib、gridspec)中旋转记号标签

Python 在子地块(Pyplot、Matplotlib、gridspec)中旋转记号标签,python,matplotlib,Python,Matplotlib,我试图将子地块(使用GridSpec创建)的x标签旋转45度。我尝试过使用axa.setxticks()和axa.setxticklabels,但似乎不起作用。谷歌也帮不上忙,因为大多数关于标签的问题都是关于普通情节,而不是子情节 见下面的代码: width = 20 # Width of the figure in centimeters height = 15

我试图将子地块(使用GridSpec创建)的x标签旋转45度。我尝试过使用
axa.setxticks()
axa.setxticklabels
,但似乎不起作用。谷歌也帮不上忙,因为大多数关于标签的问题都是关于普通情节,而不是子情节

见下面的代码:

width = 20                                    # Width of the figure in centimeters
height = 15                                   # Height of the figure in centimeters
w = width * 0.393701                            # Conversion to inches
h = height * 0.393701                           # Conversion to inches

f1 = plt.figure(figsize=[w,h])
gs = gridspec.GridSpec(1, 7, width_ratios = [1.5, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0])

axa = plt.subplot(gs[0])
axa.plot(dts, z,'k', alpha=0.75, lw=0.25)
#axa.set_title('...')
axa.set_ylabel('TVDSS ' + '$[m]$', fontsize = '10' )
axa.set_xlabel('slowness 'r'$[\mu s/m]$', fontsize = '10')
axa.set_ylim(245, 260)
axa.set_xlim(650, 700)
axa.tick_params(labelsize=7)
axa.invert_yaxis()
axa.grid()

任何帮助都将不胜感激

可以使用此行设置记号标签的旋转特性:

plt.setp(axa.xaxis.get_majorticklabels(), rotation=45)
setp
是一个实用函数,用于设置多个艺术家的属性(本例中为所有标签)


顺便说一句:matplotlib中的“正常”和子批次之间没有区别。两者都只是轴对象。唯一的区别在于同一个图形中的大小、位置和数量。

您可以通过多种方式完成:

以下是一个利用以下技术的解决方案:

以下是另一个利用以下技术的解决方案:

第三种解决方案是利用:


只是想添加我在上找到的另一个解决方案:

ax[你的轴]。勾选参数(轴=x',旋转=90)


可以通过传入特定参数来指定所需的轴。与公认的答案相比,此方法的优点在于,您可以控制此更改应用于哪个轴

默认情况下,
tick_-params
将旋转应用于绘图的两个轴,以仅旋转x轴:
ax。tick_-params('x',labelrotation=45)
为什么有这么多方法可以这样做,为什么有些方法有时可以工作,而有些方法永远不能工作?这就是matplotlib让我沮丧的原因。由于用例之间缺乏一致性,如果有更好的选择的话,我想放弃它。@rocksNwaves在Python中也有多种方法实现同样的目标。我花了几年时间才习惯matplotlib。我还在学习。以前我使用的是gnuplot,但是matplotlib功能更强大;尤其是在Python上下文中。我仍然非常喜欢gnuplot的简单性;偶尔我会使用它从命令行进行绘图。
ax.tick_params(labelrotation=45)
ax.set_xticklabels(labels, rotation=45)
for tick in ax.get_xticklabels():
    tick.set_rotation(45)