Matplotlib: группируйте разные маркеры разброса под одной и той же легендой - PullRequest
0 голосов
/ 04 марта 2019

У меня следующий вопрос о графике 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

Как и предполагалось, рабочий пример;как вы можете видеть, у меня есть три строки в легенде, все данные называются «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()

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 04 марта 2019

Нашел!

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)})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...