找不到标记对象

6 投票
1 回答
17938 浏览
提问于 2025-04-18 05:03

我用matplotlib设置了一个图表,运行得很好(见下图),但是当我想添加图例时,出现了一个错误:UserWarning: No labeled objects found. Use label='...' kwarg on indivial plots.

这是我用来定义我想在图例中显示的线条以及绘制图例的代码:

#Moving average labels
smaLabel1 = str(SMA1)+'d SMA'
smaLabel2 = str(SMA2)+'d SMA'
smaLabel3 = str(SMA3)+'d SMA'

#Add SMAs to chart
ax1.plot(ind, avg1, '#5998ff', label=smaLabel1, linewidth=1)
ax1.plot(ind, avg2, '#ffbb82', label=smaLabel2, linewidth=1)
ax1.plot(ind, avg3, '#d689c4', label=smaLabel3, linewidth=1)
""" End SMA additions """

#Add legend
plt.legend()

我检查过smaLabel变量,里面的字符串都是正确的。有人知道为什么标签没有被识别吗?

enter image description here

1 个回答

10

在你画简单移动平均线(SMA)之前,必须先画出蜡烛图和成交量图。蜡烛图上没有任何标记的对象,所以当你调用 plt.legend() 时,它会试图为当前坐标轴上的每个图形添加一个标签。因此,你会看到这个警告:UserWarning: No labeled objects found. Use label='...' kwarg on indivial plots.

要解决这个问题,我想现在应该很清楚了,你只需要先画出SMA,然后再画蜡烛图,并在这之后立即调用 legend(),这样在生成其他图形之前就可以了。

撰写回答