如何在 matplotlib 中为已绘制的线设置标签?

How do I set label for an already plotted line in matplotlib?

在我的代码中我已经执行了

ax.plot(x, y, 'b.-', ...)

并且需要能够在事后为相应的行设置标签,以达到与我

相同的效果
ax.plot(x, y, 'b.-', label='lbl', ...)

有没有办法在 Matplotlib 中做到这一点?

如果在创建时抓取line2D对象,可以使用line.set_label()设置标签:

line, = ax.plot(x, y, 'b.-', ...)
line.set_label('line 1')

如果没有,您可以从 Axes:

中找到 line2D
ax.plot(x, y, 'b.-', ...)
ax.lines[-1].set_label('line 1')

注意,ax.lines[-1]将访问创建的最后一行,因此如果您创建多行,则需要注意使用此方法将标签设置在哪一行。


一个最小的例子:

import matplotlib.pyplot as plt
fig,ax = plt.subplots(1)
l,=ax.plot(range(5))
l.set_label('line 1')
ax.legend()
plt.show()