Matplotlib调整刻度定位器和格式化程序

时间:2018-02-08 18:23:32

标签: python datetime matplotlib

我正在尝试绘制一小组包含日期和值的数据。我注意到我的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轴标签):

plot

然而,当我有更多数据时,我没有这个问题:

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()

这产生了这个情节:

plot2

发生了什么事?我该如何解决这个问题?

感谢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()

0 个答案:

没有答案
相关问题