Как построить линии сначала, а точки последними в matplotlib - PullRequest
51 голосов
/ 23 февраля 2010

У меня есть простой график с несколькими наборами точек и линий, соединяющих каждый набор. Я хочу, чтобы точки были нанесены поверх линий (чтобы линия не отображалась внутри точки). Независимо от порядка вызовов plot и scatter, этот график получается одинаковым, и не так, как хотелось бы. Есть ли простой способ сделать это?

import math
import matplotlib.pyplot as plt

def poisson(m):
    def f(k):
        e = math.e**(-m)
        f = math.factorial(k)
        g = m**k
        return g*e/f
    return f

R = range(20)
L = list()
means = (1,4,10)
for m in means:
    f = poisson(m)
    L.append([f(k) for k in R])
colors = ['r','b','purple']

for c,P in zip(colors,L):
    plt.plot(R,P,color='0.2',lw=1.5)
    plt.scatter(R,P,s=150,color=c)

ax = plt.axes()
ax.set_xlim(-0.5,20)
ax.set_ylim(-0.01,0.4)
plt.savefig('example.png')

1 Ответ

72 голосов
/ 23 февраля 2010

Вам необходимо установить Z-порядок.

plt.plot(R,P,color='0.2',lw=1.5, zorder=1)
plt.scatter(R,P,s=150,color=c, zorder=2)

Проверьте этот пример. http://matplotlib.sourceforge.net/examples/pylab_examples/zorder_demo.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...