matplotlib图例无法正确使用句柄

巴斯蒂安

Matplotlib可以自动或手动显示图例,并为其提供图柄。但是不知何故后者对我来说无法正常工作。举个例子:

legend_handles = {}
lgh, = plt.plot([0, 1], [0, 1], '-r')
lgh, = plt.plot([0, 1], [1, 1], '-r')
legend_handles["a"] = lgh
lgh, = plt.plot([0, 1], [1, 0], '-b')
legend_handles["b"] = lgh
plt.legend(legend_handles);

这将使图例具有两条红线,而不是一条蓝线和一条红线。

在此处输入图片说明

如何获得仅在部分图上显示图例的信息?

认真的重要性

目前没有迹象显示这传说将支持字典为输入。而是签名是

legend()                  ## (1)
legend(labels)            ## (2)
legend(handles, labels)   ## (3)

在这里,您使用的是(2),所以在三行中,只有前2行标有词典的键(因为词典只有两个键)。

如果需要使用字典,则需要先将其解压缩以获得两个列表,可用于实现情况(3)。

import matplotlib.pyplot as plt

legend_handles = {}
lgh1, = plt.plot([0, 1], [0, 1], '-r')
lgh2, = plt.plot([0, 1], [1, 1], '-r')
legend_handles["a"] = lgh1
lgh3, = plt.plot([1, 0], [1, 0], '-b')
legend_handles["b"] = lgh3

labels, handles = zip(*legend_handles.items())
plt.legend(handles, labels)

plt.show()

但是,根本不使用字典似乎更简单:

import matplotlib.pyplot as plt

lgh1, = plt.plot([0, 1], [0, 1], '-r')
lgh2, = plt.plot([0, 1], [1, 1], '-r')
lgh3, = plt.plot([1, 0], [1, 0], '-b')

plt.legend([lgh1, lgh3], list("ab"))

plt.show()

别忘了,通过label直接提供给艺术家来创建传奇的规范解决方案

import matplotlib.pyplot as plt

lgh1, = plt.plot([0, 1], [0, 1], '-r', label="a")
lgh2, = plt.plot([0, 1], [1, 1], '-r')
lgh3, = plt.plot([1, 0], [1, 0], '-b', label="b")

plt.legend()

plt.show()

在所有情况下的结果:

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章