[英]matplotlib - what kind of set_major_locator should I use
當X軸是日期時,我對plot
功能有疑問。
設置
我有兩個時間序列dt
和x
,其中dt
是datetime.datetime
值的列表,而x
是一個numpy
數組對象。
dt =
[datetime.datetime(1996, 12, 3, 0, 0),
datetime.datetime(1996, 12, 4, 0, 0),
...,
datetime.datetime(2015, 6, 5, 0, 0),
datetime.datetime(2015, 6, 8, 0, 0)]
x =
array([29.06262, 29.26933, ..., 208.41999, 208.44532])
兩者的長度相同。
當我將它們繪制為:
ax.plot(dt, x, color='black', lw=2)
我得到了一張帶有X-Tick標簽作為其年份的圖表(例如1994, 1998, 2002, 2006, 2010, 2014
)。
縮放后,X-Tick標簽會很好地開始顯示月份(例如Aug 2009, Oct 2009, Dec 2009, Feb 2010, Apr 2010, Jun 2010
)。
進一步縮放后,X-Tick標簽再次很好地開始顯示日期(例如Jan 14 2010, Jan 21 2010, Jan 28 2010, Feb 04 2010, Feb 11 2010, Feb 18 2010
)。
題
現在,我試圖繪制自定義圖表(例如,使用LineCollection
)而不是使用默認plot
。
我懷疑我需要使用ax.xaxis.set_major_locator(???)
和ax.xaxis.set_major_formatter(???)
來獲得與默認plot
功能相同的X軸功能。
我需要做什么來提供(即???
)到ax.xaxis.set_major_locator(???)
和ax.xaxis.set_major_formatter(???)
是的,您的假設是正確的:您必須手動設置定位器和格式化程序。 “常規”的有可用matplotlib.ticker
和相關的日期的那部分matplotlib.dates
。 有很多固定值(例如WeekdayLocator,MicrosecondLocator等),還有使用plot
時獲得的自動值。
因此,應該這樣做:
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
# all your fancy plotting code
ax.xaxis.set_major_locator(mdates.AutoDateLocator())
ax.xaxis.set_major_formatter(mdates.AutoDateFormatter())
plt.show()
進一步閱讀: http : //matplotlib.org/api/dates_api.html
請注意日期時間列表:matplotlib具有內部日期/時間表示形式(以浮點數表示的天數),因此在繪制之前需要轉換datetime對象。 在plot
此轉換會自動發生,對於自定義圖形,您可能必須自己使用matplotlib.dates.date2num
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.