2016-07-06 64 views
0

我使用Pylab(PL)的次要情節的功能如下:使用Pylab次要情節功能:具有不同X排隊次要情節軸

f, (ax1, ax2, ax3, ax4) = pl.subplots(4, sharex=True, sharey=False) 

比方說,T0,T1,T2,T3成爲四個時間戳按時間順序排列。軸對象ax1和ax2生成時間戳t0和t2之間降水和氣溫數據的子圖,總數爲100個數據點。軸對象ax3和ax4在時間戳t1和t3之間生成總數爲500個數據點的相對溼度和風數據的子圖。

import matplotlib.dates as dates 
time_numbers1 = dates.datestr2num(time_array1) 
time_numbers2 = dates.datestr2num(time_array2) 

,我遇到的問題是毫不奇怪:當我運行我的代碼,生成的圖形顯示AX1和AX2數據被扭曲和不

兩個時間陣列使用轉換爲十進制數符合ax3和ax4中的數據。

我知道,我的問題是依賴於我的過於簡單的使用這個次要情節設置的:

sharex=True 

有沒有人有建議/想法,處理這個問題的繪圖?要清楚的是,這不是一個死或死的情況,因爲我總是可以擺弄數據(例如,零填充,插值,平均)以獲得數據排列。然而,這是很多數據,所以我很好奇,如果有任何聰明的繪圖解決方案可能在那裏。

回答

0

恐怕plt.subplots是你做太多事情,你不知道。如果你想要簡單的數字,它的效果很好,但如果你想做一些稍微先進的事情,通常最好是創建自己的圖形並手動添加子圖。即

import matplotlib.pyplot as plt 
fig = plt.figure() 
ax1 = fig.add_subplot(4, 1, 1) 
ax2 = fig.add_subplot(4, 1, 2, sharex=ax1) 
ax3 = fig.add_subplot(4, 1, 3) 
ax4 = fig.add_subplot(4, 1, 4, sharex=ax3) 

這應該強制只有兩個x軸是共享的,但是是兩對。在這種情況下,我會說,而不是堆疊它們可能是與網格更好,因爲

import matplotlib.pyplot as plt 
fig = plt.figure() 
ax1 = fig.add_subplot(2, 2, 1) 
ax2 = fig.add_subplot(2, 2, 2) 
ax3 = fig.add_subplot(2, 2, 3, sharex=ax1) 
ax4 = fig.add_subplot(2, 2, 4, sharex=ax3) 

希望它能幫助!

+0

謝謝@pathoren!這正是我需要的。 – Stewart

+0

好!如果您發現它有用,請接受答案。 – pathoren

+0

是的,我試圖找到如何「接受」你的答案昨天,但我不知道如何。當然,一旦我知道該怎麼做,這非常容易:只需點擊灰色複選標記即可。很好。 – Stewart