第二个图例框不正确 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()
我有四组数据都绘制在同一张图上。我想要两个单独的图例框(一个图例框用于 "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()