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

Matplotlib双Y轴绘图报list无get_label属性AttributeError

报错产生原因

这个错误的核心是对matplotlib Axes.plot() 方法的返回值理解有误:

  • 无论单次调用plot()绘制几条曲线,方法的返回值始终是**Line2D对象组成的列表**,哪怕你只画1条曲线,返回的也是长度为1的列表,不是单个Line2D对象。

你的代码里:

  • curve1 = ax1.plot(x, y, label="sin", color='r') 实际得到的是[Line2D实例],是列表类型
  • curve2 = ax2.plot(x, z, label="sinh", color='b') 同理也是列表类型

后续你定义curves = [curve1, curve2]时,得到的是一个嵌套列表:[[Line2D实例], [Line2D实例]]。当你遍历这个列表执行curve.get_label()时,每次取到的curve其实是内层的列表,Python列表本身没有get_label()方法,就会触发你看到的AttributeError。

修复方案

任选以下一种修改方式即可解决问题:

  • 方案1:取plot()返回列表的第一个元素,直接拿到真正的线条对象,仅修改曲线赋值的两行代码即可,后续逻辑无需调整:
# 给plot返回值加[0]索引,取出列表里的Line2D对象
curve1 = ax1.plot(x, y, label="sin", color='r')[0]
curve2 = ax2.plot(x, z, label="sinh", color='b')[0]
  • 方案2:不修改plot的赋值逻辑,组装曲线列表时把两个返回的列表直接拼接,平铺得到所有Line2D对象:
# 用列表拼接替代嵌套列表组装,curves里直接存Line2D对象
curves = curve1 + curve2

修改后运行代码,就可以正常同时显示两个Y轴对应曲线的图例,不会再触发属性报错。

内容的提问来源于stack exchange,提问作者Krushna Navle

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:57:18