第二个图例框不正确 symbols/markers

Second legend box doesn't have correct symbols/markers

我有四组数据都绘制在同一张图上。我想要两个单独的图例框(一个图例框用于 "set1" 和 "set2",另一个图例框用于 "set3" 和 "set4")。

问题是我无法让第二个图例框将正确的符号与集合相关联。它只使用 set1 和 set2 的符号,而不是使用 set3 和 set4 的符号。

我在 matplotlib.org 上阅读了很多不同的内容,但我不知道如何解决这个问题。

代码如下:

import matplotlib.pyplot as plt

x1 = [1,2,3]
x2 = [4,5,6]
x3 = [7,8,9]
x4 = [10,11,12]

y1 = [1,2,3]
y2 = [4,5,6]
y3 = [7,8,9]
y4=[10,11,12]

set1 = plt.plot(x1, y1, '.', color="red")
set2 = plt.plot(x2, y2, '*', color="blue")
set3 = plt.plot(x3, y3, '^', color="green")
set4 = plt.plot(x4, y4, 'x', color="black")

label_set1_and_set2 = ["set1", "set2"]
label_set3_and_set4 = ["set3", "set4"]

leg1 = plt.legend([set1, set2], labels=label_set1_and_set2,  loc=0, title="Set1 and Set2", frameon=True, fontsize=10)
ax = plt.axes()
ax.add_artist(leg1)
leg2 = plt.legend([set3, set4], labels=label_set3_and_set4, loc=4, title="Set3 and Set4")

plt.show()

Set3 应该用绿色三角形表示,set4 应该用黑色三角形表示 "x"。

主要问题是参数类型的混合。您可以使用任何

plt.legend(handles, labels)
plt.legend(handles=handles, labels=labels)

但不是

plt.legend(handles, labels=labels)

其次,您需要解压缩要提供给图例的行列表。

总计:

import matplotlib.pyplot as plt

x1 = [1,2,3]
x2 = [4,5,6]
x3 = [7,8,9]
x4 = [10,11,12]

y1 = [1,2,3]
y2 = [4,5,6]
y3 = [7,8,9]
y4=[10,11,12]

set1, = plt.plot(x1, y1, '.', color="red")
set2, = plt.plot(x2, y2, '*', color="blue")
set3, = plt.plot(x3, y3, '^', color="green")
set4, = plt.plot(x4, y4, 'x', color="black")

label_set1_and_set2 = ["set1", "set2"]
label_set3_and_set4 = ["set3", "set4"]

leg1 = plt.legend(handles=[set1, set2], labels=label_set1_and_set2,  loc=0, 
                  title="Set1 and Set2", frameon=True, fontsize=10)
ax = plt.gca()
ax.add_artist(leg1)
leg2 = plt.legend(handles=[set3, set4], labels=label_set3_and_set4, loc=4, 
                  title="Set3 and Set4")

plt.show()