Matplotlib 绘制 2D 形状而不是 1D 线 [重复]

Posted

技术标签:

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

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

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

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

【问题讨论】:

代码在哪里。 【参考方案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()

【讨论】:

以上是关于Matplotlib 绘制 2D 形状而不是 1D 线 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

matplotlib 3D 数据的 2D 切片

2D OpenGL 场景因大量重叠形状而变慢

在 OpenGL 中使用箭头键移动一些形状 - 它缩小而不是移动

使用 Matplotlib 绘制 2D 热图

Keras 功能 api 输入形状错误,lstm 层收到 2d 而不是 3d 形状

Python中Matplotlib的点线形状及颜色(绘制散点图)