Matplotlib 如何使用月/年分辨率(只有几行代码)绘制时间序列?

Matplotlib 如何使用月/年分辨率(只有几行代码)绘制时间序列?,matplotlib,plot,pandas,Matplotlib,Plot,Pandas,假设我们想要绘制一个时间序列,例如: import pandas as pd import numpy as np a=pd.DatetimeIndex(start='2010-01-01',end='2014-01-01' , freq='D') b=pd.Series(np.randn(len(a)), index=a) b.plot() 结果是一个图形,其中x轴以年为标签,我想得到月-年标签。有没有一种快速的方法可以避免使用几十行复杂的代码调用matplotlib?Pandas对Axi

假设我们想要绘制一个时间序列,例如:

import pandas as pd
import numpy as np

a=pd.DatetimeIndex(start='2010-01-01',end='2014-01-01' , freq='D')
b=pd.Series(np.randn(len(a)), index=a)
b.plot()

结果是一个图形,其中x轴以年为标签,我想得到月-年标签。有没有一种快速的方法可以避免使用几十行复杂的代码调用matplotlib?

Pandas对Axis对象执行了一些非常奇怪的操作,使得很难避免matplotlib调用

我会这样做的

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import pandas as pd


a = pd.DatetimeIndex(start='2010-01-01',end='2014-01-01' , freq='D')
b = pd.Series(np.random.randn(len(a)), index=a)
fig, ax = plt.subplots()
ax.plot(b.index, b)
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
这给了我:

thx,是否也可以设置x轴的粒度,例如每个月的标签?是。然后使用ax.xaxis.set_major_locatormdates.MonthLocatorN,其中N是以月为单位的滴答间隔。