Matplotlib:在同一图例下对不同的散点标记进行分组

问题描述 投票:2回答:1

我有一个关于Matplotlib图的以下问题。

我正在绘制来自不同实验的数据作为散点图;每组数据都有自己的标记和颜色。我想将它们分组在图例的一行中,因为对我来说它们具有相同的“含义”。 ES。假设我有来自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

enter image description here

如建议,一个工作的例子;如你所见,我在图例中有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()

谢谢你的帮助

python matplotlib legend scatter
1个回答
2
投票

找到了!

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

enter image description here

非常感谢任何至少试图提供帮助的人!

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

plt.legend([(a,b),(c)], ['goupdata1', 'groupdata2'], numpoints=1, handler_map={tuple: HandlerTuple(ndivide=None)})
© www.soinside.com 2019 - 2024. All rights reserved.