在matplotlib中编辑x轴刻度标签的日期格式

Osm*_*hop 39 python matplotlib

我期待在x轴上编辑日期的格式.下图显示了默认情况下它们在条形图中的显示方式.我想删除'Dec'和'2012'的重复,只是沿着x轴有实际的日期编号.

有关如何做到这一点的任何建议?

在此输入图像描述

Pau*_*l H 57

简而言之:

import matplotlib.dates as mdates
myFmt = mdates.DateFormatter('%d')
ax.xaxis.set_major_formatter(myFmt)
Run Code Online (Sandbox Code Playgroud)

matplotlib网站上有很多例子.我最常用的就是这里

  • @3kstc如果你想使用`plt`而不是`ax`,你可以这样做:`plt.gca().xaxis.set_major_formatter(myFmt)` (11认同)
  • 有没有使用`ax.xaxis`但使用`plt.<command>`的替代方法? (4认同)
  • 要快速查看所有可能的日期时间格式,请使用[strftime.org](http://strftime.org)。 (3认同)
  • @ 3kstc也许,但是我无法想象一种模糊地依赖状态机的情况比更明确的命令更可取. (2认同)
  • 注意 @Robino 在答案中定义了 `ax` (2认同)
  • `plt.gca()` 返回 Axes 对象,您应该提前定义该对象 (2认同)

Rob*_*ino 24

虽然Paul H给出的答案显示了必不可少的部分,但它并不是一个完整的例子.另一方面,matplotlib示例似乎相当复杂,并没有显示如何使用天.

所以对于有需要的人来说,这是一个完整的工作示例:

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()
Run Code Online (Sandbox Code Playgroud)


Ami*_*jan 6

如本示例所示,从包matplotlib.dates中,日期格式可以应用于绘图的轴标签和刻度。

下面我给出了一个为多图标记轴刻度的示例

import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import pandas as pd

df = pd.read_csv('US_temp.csv')
plt.plot(df['Date'],df_f['MINT'],label='Min Temp.')
plt.plot(df['Date'],df_f['MAXT'],label='Max Temp.')
plt.legend()
####### Use the below functions #######
dtFmt = mdates.DateFormatter('%b') # define the formatting
plt.gca().xaxis.set_major_formatter(dtFmt) # apply the format to the desired axis
plt.show()
Run Code Online (Sandbox Code Playgroud)

就如此容易