matplotlib 旋转子图中的记号标签

yrwegjxp  于 2023-04-12  发布在  其他
关注(0)|答案(3)|浏览(170)

我尝试将子图的x标签(使用GridSpec创建)旋转45度。我尝试使用axa.set_xticks()axa.set_xticklabels,但似乎不起作用。Google也没有帮助,因为大多数关于标签的问题都是关于正常图,而不是子图。
代码如下:

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()

任何帮助将不胜感激!

9nvpjoqh

9nvpjoqh1#

你可以通过多种方式做到这一点:
下面是一个使用tick_params的解决方案:

ax.tick_params(labelrotation=45)

下面是使用set_xticklabels的另一个解决方案:

ax.set_xticklabels(labels, rotation=45)

Here是利用set_rotation的第三种解决方案:

for tick in ax.get_xticklabels():
    tick.set_rotation(45)
wgeznvg7

wgeznvg72#

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

plt.setp(axa.xaxis.get_majorticklabels(), rotation=45)

setp是一个设置多个艺术家(本例中为所有ticklabels)属性的实用函数。
顺便说一句:matplotlib中的 'normal' 和subplot没有区别。两者都只是Axes对象。唯一的区别是大小和位置以及它们在同一图中的数量。

9rygscc1

9rygscc13#

只是想添加我在matplotlib git discussion page上找到的另一个解决方案:
ax[your_axis].tick_params(axis='x', rotation=90)
您可以通过传入特定的参数来指定所需的轴。与接受的答案相比,此方法的优点是您可以控制将此更改应用于哪个轴。Other parameters can be found here

相关问题