67

我正在寻找编辑 x 轴上日期的格式。下图显示了默认情况下它们在我的条形图上的显示方式。我想删除“Dec”和“2012”的重复,只在 x 轴上有实际的日期数字。

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

在此处输入图像描述

4

3 回答 3

117

简而言之:

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

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

于 2013-02-18T22:26:09.010 回答
47

虽然 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()
于 2017-04-26T10:04:39.637 回答
3

从本例所示的包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()

就如此容易

于 2020-10-24T04:59:45.597 回答