簡體   English   中英

matplotlib-我應該使用哪種set_major_locator

[英]matplotlib - what kind of set_major_locator should I use

當X軸是日期時,我對plot功能有疑問。

設置

我有兩個時間序列dtx ,其中dtdatetime.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM