2013-02-18 270 views
23

我正在尋找編輯x軸日期的格式。下圖顯示了它們默認情況下在條形圖上的顯示方式。我想刪除'Dec'和'2012'的重複,並且只是沿着x軸有實際的日期編號。在matplotlib中編輯x軸刻度標籤的日期格式

有關我如何做到這一點的任何建議?

enter image description here

+0

這裏的答案爲我工作:http://stackoverflow.com/questions/30133280/pandas-bar-plot-changes-date -format – Mahdi 2016-09-21 08:53:30

回答

38

簡而言之:

import matplotlib.dates as mdates 
myFmt = mdates.DateFormatter('%d') 
ax.xaxis.set_major_formatter(myFmt) 

的matplotlib網站上的許多例子。我最常用的是here

+2

是否有一種不使用'ax.xaxis'但使用'plt的替代方法。 '? – 3kstc 2017-06-16 05:45:55

+0

@ 3kstc也許,但我無法想象一種情況,即對更明確的命令不情願依賴狀態機。 – 2017-06-16 15:56:12

+0

要快速查看所有可能的日期時間格式,請使用[strftime.org](http://strftime.org)。 – ImportanceOfBeingErnest 2018-02-08 19:14:14

3

儘管Paul H給出的答案顯示了重要部分,但它並不是一個完整的例子。另一方面matplotlib example似乎相當複雜,並沒有顯示如何使用天。

所以每個人都需要在這裏是一個完整的工作示例:

from datetime import datetime 
import matplotlib.pyplot as plt 
from matplotlib.dates import DateFormatter 

myDates = [datetime(2012,1,i+3) for i in range(10)] 
myValues = [5,6,4,3,7,8,1,2,5,4] 
fig, ax = plt.subplots() 
ax.plot(myDates,myValues) 

myFmt = DateFormatter("%d") 
ax.xaxis.set_major_formatter(myFmt) 

## Rotate date labels automatically 
fig.autofmt_xdate() 
plt.show()