Matplotlib 绘制二维形状而不是一维线

Matplotlib plots 2D shapes instead of 1D lines

我正在尝试绘制美国国债收益率曲线。我在以下 pandas 数据框中获得了数据:

所以,基本上我想根据索引绘制数据框的 3 列,并且想要有 3 行。但是当我尝试这样做时,我得到的不是线条而是相互重叠的二维形状,如下所示:

我尝试同时使用 Pandas 中的 df.plot() 和常用的 plt.plot() 命令,但它们给出了相同的结果。如何从这些二维形状制作一维线条?

在您显示的图中,这些是 实际上 行,但它们彼此靠得很近,似乎有一个彩色区域。

创建虚假数据框:

df = pd.DataFrame({'date': pd.date_range(start = '1990-01-02', end = '2020-12-31', freq = 'D')})
df['DGS1'] = 10*np.random.random(len(df))
df['DGS10'] = 10*np.random.random(len(df))
df['DGS5'] = 10*np.random.random(len(df))
df = df.set_index('date')

绘图:

df.plot()

plt.show()

随意区域放大:

plt.xlim('2003-03-07', '2003-08-04')

再次缩放:

plt.xlim('2003-04-07', '2003-04-22')


如果您可以放大某些感兴趣的区域,则可以保持数据框不变,否则您可以使用 pandas.DataFrame.resample 对数据进行重新采样。请注意,此操作会更改您的原始数据,因此您必须小心解释您将获得的图表。
一个可行的例子可能是以 1 个月的频率对数据帧重新采样并计算每个月的平均值:

df = df.resample('1M').mean()