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

oro*_*ome 11 python plot matplotlib legend axis-labels

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

ax.plot(x, y, 'b.-', ...)
Run Code Online (Sandbox Code Playgroud)

并且需要能够在事后设置相应行的标签,以获得与我相同的效果

ax.plot(x, y, 'b.-', label='lbl', ...)
Run Code Online (Sandbox Code Playgroud)

有没有办法在Matplotlib中这样做?

tmd*_*son 11

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

line, = ax.plot(x, y, 'b.-', ...)
line.set_label('line 1')
Run Code Online (Sandbox Code Playgroud)

如果不这样做,你可以找到line2D来自Axes:

ax.plot(x, y, 'b.-', ...)
ax.lines[-1].set_label('line 1')
Run Code Online (Sandbox Code Playgroud)

注意,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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述