旋转子图xaxis位置

时间:2017-04-24 15:19:44

标签: python matplotlib rotation

我在一个数字上有两个子图。我在x轴上绘制时间(00:12:32),我想旋转两个子图的xticks,但是当我使用下面的代码时,只旋转一个子图刻。

plt.xticks(rotation=90)

以下是完整代码:

#print(start_event_arr)
fig = plt.figure(figsize=(20.0, 20.0))
fig1 = plt.figure(figsize=(20.0, 20.0))

ax = fig.add_subplot(2,1,2)
ax1 = fig1.add_subplot(2,1,1,sharex=ax)
plt.setp(ax.get_xticklabels(), fontsize=6)


dates = [dateutil.parser.parse(s) for s in start_event_arr]
y = event_volume_sums
#plt.xticks(rotation=90)

ax.set_xticks(dates)
ax.plot(dates, cumulative_vol_arr)
ax.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M:%S'))
ax.xaxis.set_major_locator(mdates.MinuteLocator(interval=30))
ax.tick_params(axis='x', which='major', labelsize=10)
plt.xticks(rotation=90)

cm = plt.cm.get_cmap('jet')
ax1.scatter(dates,y,s=event_duration_secs*500, c=event_duration_secs,cmap=cm,linewidth=0,alpha=1.0)
ax1.grid()

#plt.setp(ax1.get_xticklabels(), visible=False)
plt.show()

我怀疑问题是我如何定义子图,但我不知道如何解决它。说ax.xticks()是不可能的。 谢谢。

1 个答案:

答案 0 :(得分:1)

您需要将旋转设置为两个轴。一种选择是使用

plt.setp(ax.get_xticklabels(), rotation=90)
plt.setp(ax1.get_xticklabels(), rotation=90)

您还应该能够更改每个图中所有子图的旋转

fig.autofmt_xdate(rotation=90)
fig1.autofmt_xdate(rotation=90)