You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matplotlib绘制国债收益率曲线出现2D形状而非1D折线该如何解决

问题核心原因

出现2D填充形状而非折线的最常见诱因是两种:

  • 待绘制的三列数据不是数值类型(为object/字符串类型),matplotlib无法按连续数值规则绘制折线
  • 索引未排序,折线绘制时会在高低值之间反复横跳,形成大量重叠的封闭区域
解决步骤
  1. 转换数据为数值类型
    执行以下代码将目标列转为浮点型,无法转换的异常值会自动设为缺失值NaN:
import pandas as pd
# 请将下方列名替换为你实际的三列名称
df[['1年期', '5年期', '10年期']] = df[['1年期', '5年期', '10年期']].apply(pd.to_numeric, errors='coerce')
  1. 处理索引与排序
    如果你的索引是日期类型,先转为标准datetime格式再按时间升序排列:
df.index = pd.to_datetime(df.index)
df = df.sort_index()
  1. 可选:处理缺失值
    如果存在缺失值可以选择删除空值或者插值补全:
# 方式1:删除含缺失值的行
df = df.dropna()
# 方式2:线性插值补全缺失值
# df = df.interpolate()
绘图示例代码
import matplotlib.pyplot as plt

plt.figure(figsize=(12, 6))
# 逐个绘制三列折线
plt.plot(df.index, df['1年期'], label='1年期国债收益率', linewidth=1)
plt.plot(df.index, df['5年期'], label='5年期国债收益率', linewidth=1)
plt.plot(df.index, df['10年期'], label='10年期国债收益率', linewidth=1)

plt.xlabel('日期')
plt.ylabel('收益率(%)')
plt.title('国债收益率曲线')
plt.legend()
plt.grid(alpha=0.3)
plt.show()

内容的提问来源于stack exchange,提问作者John P.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 00:21:02