首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >matplotlib图例无法正确处理句柄

matplotlib图例无法正确处理句柄
EN

Stack Overflow用户
提问于 2019-01-28 00:43:25
回答 1查看 776关注 0票数 2

Matplotlib可以自动或手动显示图例,并为其提供绘图句柄。但不知何故,后者在我身上并不能正常工作。举个例子:

代码语言:javascript
代码运行次数:0
运行
复制
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);

这将产生一个带有两条红线的图例,而不是一条蓝色和一条红线。

如何才能使图例仅显示给所选的绘图?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-28 01:06:02

图例支持将字典作为输入的no indication。相反,签名是以下任一项

代码语言:javascript
代码运行次数:0
运行
复制
legend()                  ## (1)
legend(labels)            ## (2)
legend(handles, labels)   ## (3)

这里使用的是(2),因此在这三行中,只有前两行用字典的键进行了标记(因为字典只有两个键)。

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

代码语言:javascript
代码运行次数:0
运行
复制
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()

然而,完全不使用字典似乎更简单:

代码语言:javascript
代码运行次数:0
运行
复制
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直接提供给艺术家来创建传奇的规范解决方案,

代码语言:javascript
代码运行次数:0
运行
复制
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()

所有情况下的结果:

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54390421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档