我试图将子图(使用GridSpec创建)的x标签旋转45度。我尝试过使用axa.set_xticks()
和axa.set_xticklabels
,但似乎无效。谷歌也没有帮助,因为大多数关于标签的问题都与正常情节有关,而不是次要情节。
见下面的代码:
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()
任何帮助将不胜感激!
答案 0 :(得分:5)
您可以通过多种方式进行操作:
这是一种利用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)
答案 1 :(得分:3)
您可以使用以下行设置刻度标签的旋转属性:
plt.setp(axa.xaxis.get_majorticklabels(), rotation=45)
setp
是一个实用程序函数,用于设置多个艺术家的属性(在这种情况下,所有的标签都是这样)。
BTW:'normal'和matplotlib中的子图之间没有区别。两者都只是Axes对象。唯一的区别是大小和位置以及它们在同一图中的数量。
答案 2 :(得分:1)
只想添加我在matplotlib git discussion page上找到的另一种解决方案:
ax[your_axis].tick_params(axis='x', rotation=90)
您可以通过传入特定的参数来指定所需的轴。与接受的答案相比,此方法的优势在于您可以控制此更改应用于哪个轴。 Other parameters can be found here