我认为这是一个简单的代码,但是我不断收到此错误消息,但我不知道为什么:
UserWarning:未找到带标签的对象。使用label ='...' 个别地块。 warnings.warn(“未找到带标签的对象。”
我看到了其他解决方案,他们说plt.legend()应该在plot命令之后直接出现...所以我也尝试过,但是没用
这是代码:
x_multi = [int(k[-3:]) for k in data_all_bands.keys()]
colors = ['blue', 'black', 'green', 'red']
for i in range(len(list(data_all_bands.values())[0])):
y_multi = [v[i] for v in data_all_bands.values()]
plt_multi = axes[0].scatter(x_multi, y_multi, label="channel" , color = colors[i])#, color=colors[i])
plt.legend()
该图确实出现了,但是没有标签...在上面的情况下,它应该为每种颜色写4次通道。
编辑:为了重现
data_all_bands
是一本字典,看起来像这样:
2016050 [4.2958281793198241, 3.7025449821599157, 5.1717757645735025, 4.9954723025001719]
2016178 [4.0679016016577032, 2.890807214158575, 4.9627629940324081, 4.8505350289087952]
2016290 [3.6947496139720259, 3.1549071645707891, 4.5131724769284824, 4.4082219917836483]
2016114 [3.6302508875834567, 2.9879816559435759, 4.4887321676347716, 4.4042679859883815]
答案 0 :(得分:1)
您似乎正在创建一个具有多个子图的图形,但仅在第一个图形上进行绘制。您还同时使用了面向对象的API(axes.scatter
)和pyplot状态机(plt.legend
)。
因此,当您致电plt.legend
时,它将在您的一个空子图中查找标签,并向您发出警告。一种解决方案是使用axes[0].legend()
为要绘制的子图创建图例:
for i in range(len(list(data_all_bands.values())[0])):
y_multi = [v[i] for v in data_all_bands.values()]
plt_multi = axes[0].scatter(x_multi, y_multi, label="channel" , color = colors[i])#, color=colors[i])
axes[0].legend()