2017-04-24 75 views
0

我在一個圖上有兩個子圖。我在x軸上繪製時間(00:12:32),我想旋轉兩個子圖的xticks,但是當我使用下面的代碼時,只有一個子圖滴答被旋轉。旋轉子區域xaxis位置

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()不可能。 謝謝。

+0

之內的所有次要情節的旋轉,我會很好,如果你能提供的樣本數據與您的代碼玩。 'plt.xticks'引用'plt.gca()'(** g ** et ** c ** urrent ** a ** xis;最近創建的軸)來改變那裏的xticks。我想你也必須將旋轉應用到其他軸對象。共享一個軸並不意味着一切都是共享的。可視化表示可以獨立配置。 – mhoff

+0

即使我不能運行你的代碼,形成我所看到的,你在每一箇中都有兩個圖形和兩個子圖軸。當你調用'plt.xticks'時,它只會將更改應用於活動軸。要使任何其他軸處於活動狀態,可以調用'plt.sca(ax)'或'plt.sca(ax1)',具體取決於要更改哪個軸。 – hashmuke

回答

0

您需要將旋轉設置爲兩個軸。一種選擇是使用

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

你也應該能夠改變每個圖

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

完美,非常感謝你 – che

+0

而不是寫感謝,你可能總是upvote。 (與任何你認爲有用的問題或答案一樣,或者對你有幫助的問題也一樣)。 – ImportanceOfBeingErnest