【问题标题】:Matplotlib plots 2D shapes instead of 1D lines [duplicate]Matplotlib 绘制 2D 形状而不是 1D 线 [重复]
【发布时间】:2021-10-24 04:54:52
【问题描述】:

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

所以,基本上我想根据索引绘制数据框的 3 列,并希望有 3 行。但是当我尝试这样做时,我得到的不是线条,而是彼此重叠的 2D 形状,如下所示:

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

【问题讨论】:

  • 代码在哪里。

标签: python pandas datetime matplotlib time-series


【解决方案1】:

在你展示的情节中,那些实际上是线条,但它们彼此如此接近,以至于似乎有一个彩色区域。

虚假数据框创建:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    • 2018-04-08
    • 2020-07-08
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    相关资源
    最近更新 更多