2017-03-31 108 views
1

我有一個具有時間x軸的matplotlib圖表(時間戳由matplotlib.dates.date2num()轉換)。僅在半小時和全小時顯示Matplotlib Xaxis標籤

我想表明與標記每個半橋和全小時,這樣的標籤一格:10:00,10:30,11:00,...

要格式化我使用這些標籤間隔代碼行:

import matplotlib.dates as mdates 
ax.xaxis.set_major_locator(mdates.MinuteLocator(interval=30)) 

問題是 - 數據沒有在全部或半小時開始。所以我得到的只是正確的時間間隔,但是從每個半小時轉移開來。即10:17,10:47,11:17,...取決於數據何時開始。這怎麼解決?

+0

您不能設置軸限制嗎? – Evert

+1

MinuteLocator的'byminute'參數可能有助於:「每分鐘標記一分鐘; byminute可以是一個int或序列,默認是每分鐘標記一次:byminute = range(60)」。試試'[0,30]'。 – languitar

+0

@Evert如果我限制座標軸,我不會將圖表數據的一部分留在圖表外嗎?不幸的是,在全時或半小時開始數據顯示不是一種選擇。 – harbun

回答

0

使用由languitar指出的byminute參數是正確的選擇。

此代碼:

ax.xaxis.set_major_locator(mdates.MinuteLocator(byminute=[0,30]) 

現在只有半和全時會顯示一個標籤。

我最初測試byminute,但沒有刪除interval=30,這會導致錯誤:

ValueError: Invalid rrule byxxx generates an empty set.

因此,使用參數byminuteinterval同時不起作用,是沒有必要的反正。

0

你可以只用byminute參數使用MinuteLocator

mdates.MinuteLocator(byminute=[0,30]) 

這將解決這個定位到每一個充滿半小時。