Приведите индивидуальное значение zorder для каждого маркера на диаграмме рассеяния matplotlib - PullRequest
0 голосов
/ 01 мая 2019

У меня есть график рассеяния matplotlib со многими маркерами:

plt.scatter(x_position,y_position,c=z_position,s=90, cmap=cm.bwr,linewidth=1,edgecolor='k')

Иногда маркеры перекрываются.Я хочу, чтобы zorder каждого базировался на z_position отдельного маркера.

Возможно ли это на диаграмме рассеяния, или мне нужно было бы иметь отдельную строку для каждой точки данных со своим собственным значением zorder?

Спасибо.

1 Ответ

2 голосов
/ 01 мая 2019
import numpy as np
import matplotlib.pyplot as plt


x = np.array([0,1,0,1])
y = np.array([0,0,1,1])
z = np.array([8,4,6,2])

Если вы теперь вызываете

plt.scatter(x, y, c=z, s=1000, marker="X", 
            cmap=plt.cm.bwr, linewidth=1, edgecolor='k')

, маркеры перекрываются:

enter image description here

Последний маркер в массивахрисуется последним, поэтому тот, у которого z = 2, находится впереди.

Вы можете отсортировать массивы по z, чтобы изменить порядок появления.

order = np.argsort(z)
plt.scatter(x[order], y[order], c=z[order], s=1000, marker="X", 
            cmap=plt.cm.bwr, linewidth=1, edgecolor='k')

enter image description here

...