gpt4 book ai didi

python - matplotlib 图例不能正确处理句柄

转载 作者:太空宇宙 更新时间:2023-11-04 00:05:10 26 4
gpt4 key购买 nike

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);

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

enter image description here

我如何让它只显示所选绘图的图例?

最佳答案

no indication传说将支持字典作为输入。相反,签名是

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

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

如果需要使用字典,需要先解包得到两个列表,可以用来实现case(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()

所有情况下的结果:

enter image description here

关于python - matplotlib 图例不能正确处理句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54390421/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com