我正在尝试在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()
表面上应该在阅读。图的其余部分很好。它只是缺少传说。
答案 0 :(得分:2)
这可能很困难,但是对于有相同问题的任何人,解决方案都将legend()
方法用于相应的斧头,而不是plt
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')
ax.legend()
答案 1 :(得分:1)
您可以在图例中明确定义元素。
要完全控制哪些艺术家具有传奇条目,可以传递可迭代的传奇艺术家,然后分别传递可迭代的传奇标签。 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'])
答案 2 :(得分:0)
由于未指定标签文本而引发错误
要么做这样的事
plt.hist([x01, x02,x03], color=["lightcoral","lightskyblue","slategrey"], stacked=True, label=['Supressed','Active','Resolved'])
plt.legend()
或
如果未指定标签文本,请勿使用plt.legend()
plt.hist([x01])
plt.legend()
以上内容将引发相同的错误,因此请删除图例功能或提供所需的功能->标签。 注意:x01只是我要为其创建直方图的数字的列表,在第一个示例中,它们是三个数字列表,用于创建堆叠的条形图
最重要的是,由于未指定图例文本和调用/初始化图例而引发此错误