未找到带有放置在图例中的标签的手柄

问题描述 投票:0回答:1

我正在尝试在PyPlot中创建平行四边形。我不愿绘制平行四边形-首先我使用以下代码放入矢量箭头:

fig = plt.figure()
ax = fig.add_subplot(111)
ax.spines['left'].set_position('zero')
ax.spines['right'].set_color('none')
ax.spines['bottom'].set_position('zero')
ax.spines['top'].set_color('none')
plt.axis([-5,5,-5,5])
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
plt.grid()
plt.arrow(0,0, 3,1, head_width=0.2, color='r', length_includes_head=True, label='u')
plt.arrow(0,0, 1,3, head_width=0.2, color='r', length_includes_head=True, label='v')
plt.arrow(0,0, 4,4, head_width=0.2, color='r', length_includes_head=True, label='u+v')
plt.legend()

这将返回以下错误:

No handles with labels found to put in legend.

[我不确定为什么,因为根据plt.arrow()的文档,label是可以接受的kwarg,而plt.legend()表面上应该在读取它。图的其余部分很好。它只是缺少传说。

python matplotlib legend
1个回答
0
投票
您可以在图例中明确定义元素。

为了完全控制哪些艺术家具有传奇条目,可以传递可迭代的传奇艺术家,然后分别传递可迭代的传奇标签。 Reference

示例:

arr1 = plt.arrow(0,0, 3,1, head_width=0.2, color='r', length_includes_head=True) arr2 = plt.arrow(0,0, 1,3, head_width=0.2, color='g', length_includes_head=True) arr3 = plt.arrow(0,0, 4,4, head_width=0.2, color='b', length_includes_head=True) plt.xlim(0,5) plt.ylim(0,5) plt.legend([arr1, arr2, arr3], ['u','v','u+v'])

enter image description here
© www.soinside.com 2019 - 2024. All rights reserved.