我正在尝试绘制一小组包含日期和值的数据。我注意到我的x轴标签(日期)没有正确显示 - 只有当我有一个较小的数据集时。
import pandas as pd
import matplotlib.pyplot as plt
dates = ['2018-02-01', '2018-02-02', '2018-02-03', '2018-02-04', '2018-02-05']
values = [22, 18, 26, 12, 15]
df = pd.DataFrame({'Dates' : dates, 'Values' : values})
#Convert to datetime64
df['Dates'] = pd.to_datetime(df['Dates'])
#Plot data
fig, ax = plt.subplots()
plt.plot(df['Dates'], df['Values'])
fig.autofmt_xdate()
生成以下图表(注意x轴标签):
然而,当我有更多数据时,我没有这个问题:
dates = ['2018-02-01', '2018-02-02', '2018-02-03', '2018-02-04', '2018-02-05', '2018-02-06', '2018-02-07', '2018-02-08', '2018-02-09', '2018-02-10']
values = [22, 18, 26, 12, 15, 13, 20, 16, 22, 19]
df = pd.DataFrame({'Dates' : dates, 'Values' : values})
#Convert to datetime64
pd.to_datetime(df['Dates'])
#Plot data
fig, ax = plt.subplots()
plt.plot(df['Dates'], df['Values'])
fig.autofmt_xdate()
这产生了这个情节:
发生了什么事?我该如何解决这个问题?
感谢Thomas解释Matplotlib正在尝试做什么。在删除他无用的评论后,这个贪婪的家伙感到不安并将其标记为重复。以下是其他感兴趣的人的解决方案:
解决方案
days = mdates.DayLocator()
myformat = mdates.DateFormatter('%Y-%m-%d')
dates = ['2018-02-01', '2018-02-02', '2018-02-03', '2018-02-04', '2018-02-05']
values = [22, 18, 26, 12, 15]
df = pd.DataFrame({'Dates' : dates, 'Values' : values})
#Convert to datetime64
df['Dates'] = pd.to_datetime(df['Dates'])
#Plot data
fig, ax = plt.subplots()
plt.plot(df['Dates'], df['Values'])
ax.xaxis.set_major_locator(days)
ax.xaxis.set_major_formatter(myformat)
fig.autofmt_xdate()