【问题标题】:Matplotlib: Group different scatter markers under the same legendMatplotlib:将不同的散点标记分组在同一个图例下
【发布时间】:2019-03-04 08:53:49
【问题描述】:

我有以下关于 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()

感谢您的帮助

【问题讨论】:

标签: python matplotlib legend scatter


【解决方案1】:

找到了!

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

【讨论】:

  • 不错!如果我理解正确:为了使您的示例更清晰,我想您应该删除 label 选项,您现在是否正在覆盖它们。
猜你喜欢
  • 2014-12-16
  • 1970-01-01
  • 2021-10-06
  • 2015-07-21
  • 2021-12-11
  • 2018-07-25
  • 2016-07-23
  • 1970-01-01
  • 2020-12-19
相关资源
最近更新 更多