如何先绘制线条再绘制点
我有一个简单的图表,上面有几组点和连接这些点的线。我希望这些点能够画在线的上面,这样线就不会被点遮住。不管我先用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 个回答
104
你需要设置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