Получить маркер из коллекции Matplotlib - PullRequest
0 голосов
/ 25 мая 2018

Я ищу, чтобы получить тип маркера из коллекции Matplotlib.

Я могу получить то, что похоже на любой другой атрибут, из коллекции, вызвав collection.get_linestyle (), collection.get_linewidth () и т. Д., Но, похоже, нет опции для маркера.Я также могу извлечь тип маркера из matplotline.line.line2d.

Есть ли способ получить тип маркера из коллекции?

1 Ответ

0 голосов
/ 25 мая 2018

Я не думаю, что вы можете получить тип маркера, используемого в PathCollection (то есть в точечной диаграмме).Эта информация не сохраняется как таковая в коллекции.Однако маркеры хранятся как Path объекты (отсюда и название коллекции).

Например:

fig, ax = plt.subplots()
a = ax.scatter([0],[0],marker='v')
b = ax.scatter([1],[0],marker='s')

a.get_paths()

(путь (массив ([[- 6.123234)e-17, -5.000000e-01], [5.000000e-01, 5.000000e-01], [-5.000000e-01, 5.000000e-01], [-6.123234e-17, -5.000000e-01]]), массив ([1, 2, 2, 79], dtype = uint8)),)

Как вы можете догадаться, маркер треугольника определяется 4 точками (обратите внимание, что последняя точкаравен первому, поэтому форма закрыта).

b.get_paths()

(Path (массив ([[- 0.5, -0.5], [0.5, -0.5], [0.5, 0.5],[-0,5, 0,5], [-0,5, -0,5]]), массив ([1, 2, 2, 2, 79], dtype = uint8)),)

И наоборот, aквадратный маркер определяется 5 точками (последняя точка == первая точка).

Если цель состоит в том, чтобы скопировать этот маркер в новую коллекцию, вы сможете скопировать объект Path.Если вам нужно каким-то образом определить, какой маркер используется, вы можете сохранить список объектов Paths (сгенерированный, как указано выше) и сравнить возвращенный путь с этим списком.

...