Python Matplotlib:将不同的散布标记分组到同一图例下

Python Matplotlib:将不同的散布标记分组到同一图例下,python,matplotlib,legend,scatter,Python,Matplotlib,Legend,Scatter,关于Matplotlib绘图,我有以下问题 我将来自不同实验的数据绘制为散点图;每组数据都有自己的标记和颜色。 我想把它们放在一行文字里,因为对我来说,它们都有相同的“意义”。 锿。 假设我有3个研究小组的3组数据: plt.plot(group1, marker='^', c='r', label='groupdata') plt.plot(group2, marker='o', c='b', label='groupdata') plt.plot(group3, marker='s', c=

关于Matplotlib绘图,我有以下问题

我将来自不同实验的数据绘制为散点图;每组数据都有自己的标记和颜色。 我想把它们放在一行文字里,因为对我来说,它们都有相同的“意义”。 锿。 假设我有3个研究小组的3组数据:

plt.plot(group1, marker='^', c='r', label='groupdata')
plt.plot(group2, marker='o', c='b', label='groupdata')
plt.plot(group3, marker='s', c='g', label='groupdata')
我希望在图例中有一行显示:

^ o s = groupdata
向你展示我的意思的最好方式就是这张画;D

正如所建议的,这是一个工作示例;如你所见,我在图例中有3行,所有数据都命名为“groupdata”;我想知道是否有可能将它们分组在同一个图例行下

import matplotlib.pyplot as plt
import numpy as np
group1 = np.array([[1,4,6],[3,2,5]])
group2 = np.array([[1,5,9],[2,2,5]])
group3 = np.array([[1,4,2],[11,2,7]])
plt.plot(group1[0,:],group1[1,:], 'ro', marker='^', label='groupdata')
plt.plot(group2[0,:],group2[1,:], 'bo', marker='o', label='groupdata')
plt.plot(group3[0,:],group3[1,:], 'go', marker='s', label='groupdata')
plt.legend()
plt.show()
谢谢你的帮助

找到了

import matplotlib.pyplot as plt
from matplotlib.legend_handler import HandlerTuple
import numpy as np
group1 = np.array([[1,4,6],[3,2,5]])
group2 = np.array([[1,5,9],[2,2,5]])
group3 = np.array([[1,4,2],[11,2,7]])
a, =plt.plot(group1[0,:],group1[1,:], 'ro', marker='^')
b, =plt.plot(group2[0,:],group2[1,:], 'bo', marker='o')
c, =plt.plot(group3[0,:],group3[1,:], 'go', marker='s')
plt.legend([(a,b,c)], ['goupdata'], numpoints=1, handler_map={tuple: HandlerTuple(ndivide=None)})
plt.show()

非常感谢所有至少尝试过帮助的人

更新: 我觉得有用的东西;如果要添加多个条目:

plt.legend([(a,b),(c)], ['goupdata1', 'groupdata2'], numpoints=1, handler_map={tuple: HandlerTuple(ndivide=None)})

虽然您的问题很清楚,并且提出得很好,但您可以将代码扩展几行,以获得一个最小的工作示例。亲爱的@TomdeGeus,谢谢你的建议。后更新检查。可能对更复杂的散射材料感兴趣。很好!如果我理解正确:为了使示例更清晰,我想您应该删除
标签
选项,您现在正在覆盖它们。