x轴标签在DataFrame图上显示日期的频率增加

Ale*_*dre 2 plot matplotlib pandas axis-labels

我有一个带有两列的pandas DataFrame:month_of_sale这是一个日期,并且number_of_gizmos_sold是一个数字。

我试图增加X轴上标签的频率,以便于阅读,但我做不到!

这是df.head()我的桌子的:

DataFrame.head()

它是这样绘制的: df.plot(y='number_of_gizmos_sold', figsize=(15,5))

DataFrame.plot()

我想增加标签的频率,因为它们之间有很大的空间。

我尝试过的

plot.xaxis.set_major_locator(MonthLocator()) 但这似乎进一步增加了标签之间的距离。

在此处输入图片说明

plot.xaxis.set_major_formatter(DateFormatter('%Y-%m-%d'))

奇怪的是,我最终得到了这个: 在此处输入图片说明

最后一幅情节给我提出的问题是:

  • 0002是怎么回事?
  • 为什么我仍然在Jul那里也有旧标签?

unu*_*tbu 5

我没有将问题追溯到其根源,但是根据bmu的解决方案,如果您调用ax.plot 而不是df.plot,则可以使用ax.xaxis.set_major_locator和配置结果 ax.xaxis.set_major_formatter

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
np.random.seed(2016)

dates = pd.date_range('2013-03-01', '2016-02-01', freq='M')
nums = (np.random.random(len(dates))-0.5).cumsum()
df = pd.DataFrame({'months': dates, 'gizmos': nums})
df['months'] = pd.to_datetime(df['months'])
df = df.set_index('months')

fig, ax = plt.subplots()
ax.plot(df.index, df['gizmos'])
# df.plot(y='gizmos', ax=ax)
ax.xaxis.set_major_locator(mdates.MonthLocator(interval=2))
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
fig.autofmt_xdate()
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明