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

matplotlib中调用get_lines()报AttributeError错误,求解决方法

解决AttributeError: 'function' object has no attribute 'get_lines'的问题

你遇到的这个错误很典型,问题直接出在这一行代码上:

fig = plt.gca

plt.gca是一个函数,作用是获取当前绘图的Axes(坐标轴)对象,但你没有加括号调用它,导致fig变量存储的是函数本身,而不是Axes实例——函数当然没有get_lines()方法,这就是报错的核心原因。

修正步骤

  1. 先正确调用plt.gca()获取Axes对象(变量名改成ax更直观,因为它代表坐标轴而非整个画布):
ax = plt.gca()
  1. 再通过Axes对象调用get_lines()获取所有绘制的曲线实例:
lines = ax.get_lines()

完整修正代码(附带图例实现)

既然你的目标是为曲线添加图例,这里直接基于修正后的代码完成需求,完全符合教材用get_lines()的要求:

import numpy as np
import matplotlib.pyplot as plt

num_curves = 3
x = np.linspace(0,1,51)
y = np.zeros((x.size, num_curves))

for n in range(num_curves):
    y[:,n] = np.sin((n+1)*x*2*np.pi)

plt.plot(x,y)
# 正确获取当前Axes对象
ax = plt.gca()
# 获取所有曲线的Line2D实例
lines = ax.get_lines()
# 为每条曲线设置图例标签并添加图例
labels = [f'Sin({n+1}×2πx)' for n in range(num_curves)]
ax.legend(lines, labels)

plt.show()

额外补充

其实绘图时直接给plt.plot传入label参数也能快速加图例,但既然教材指定要用get_lines(),上面的方案就完全贴合要求啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 12:07:44