2010-02-22 11 views
45

में अंतिम अंक कैसे लें मेरे पास प्रत्येक सेट को जोड़ने वाले बिंदुओं और रेखाओं के कई सेटों के साथ एक साधारण साजिश है। मैं चाहता हूं कि अंक लाइनों के शीर्ष पर प्लॉट किए जाएंगे (ताकि रेखा बिंदु के अंदर दिखाई न दे)। plot और scatter कॉल के आदेश के बावजूद, यह साजिश वही दिखाई देती है, जैसा कि मैं चाहूंगा। क्या ऐसा करने का कोई आसान तरीका है?पहले लाइनों को कैसे प्लॉट करें और matplotlib

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') 

उत्तर

62

आपको जेड-ऑर्डर सेट करने की आवश्यकता है।

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

+3

मुझे ज़ॉर्डर पसंद है, मेरी रिपोर्ट पर ऐसे मजेदार ग्राफों की अनुमति देता है, मैं अक्सर वास्तविक सामग्री/स्लैप स्वयंसेवकों की तुलना में उन्हें अधिक दिखने में अधिक समय बिताता हूं – arynaq

संबंधित मुद्दे