编辑x轴刻度标签的日期格式
我想调整一下图表中x轴日期的格式。下面的图片显示了在我的柱状图中,日期默认是怎么显示的。我希望去掉重复的“12月”和“2012”,只保留实际的日期数字在x轴上。
有没有什么建议可以帮我做到这一点呢?
4 个回答
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()
就是这么简单。
61
虽然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()
152
简单来说:
import matplotlib.dates as mdates
myFmt = mdates.DateFormatter('%d')
ax.xaxis.set_major_formatter(myFmt)
在matplotlib的网站上有很多例子。我最常用的一个可以在这里找到。