2013-03-06 9 views
5

मेरे कोड में, मैं समय-समय पर ग्राफ बनाने और ग्राफ को फ़ाइल में सहेजने की कोशिश कर रहा हूं। कोड इस तरह दिखता है:पिलैब ओवरलेइंग प्लॉट्स रोकें?

import pylab as p 

def simpledist(speclist,totalbugs,a): 
    data = [float(spec.pop)/float(totalbugs) for spec in speclist] 
    p.hist(data) 
    p.savefig('/Home/s1215235/Documents/python/newfolder/' + str(a) + '.png') 

हालांकि, ऐसा करने का मतलब है कि हर नई साजिश है कि बनाया जाता है, भूखंडों पर पहले ओवरले किया जाता रहा (a एक काउंटर है)। मैं इसे कैसे बता सकता हूं कि एक बार जब मैंने आंकड़ा बचा लिया है, तो मैं इसे एक नया आंकड़ा शुरू करना चाहता हूं?

उत्तर

8

साफ़ करने के लिए भूखंड का उपयोग p.clf

def simpledist(speclist,totalbugs,a): 
    data = [float(spec.pop)/float(totalbugs) for spec in speclist] 
    p.clf() 
    p.hist(data) 
    p.savefig('/Home/s1215235/Documents/python/newfolder/' + str(a) + '.png') 

यह मानते हुए कि p एक matplotlib.pyplot या figure उदाहरण है, यह भी क्या @bernie कहते हैं - वह भी ठीक काम करेगा।

@ यान की टिप्पणी

आप पहले से ही अपने शीर्षक सेट कर लिया है, अक्ष लेबल आदि तो यह उन सभी सेटिंग्स nuke होगा। जैसा कि वह कहता है उतना बेहतर होगा और

p.gca().cla() 

अपने कड़ी मेहनत को सुरक्षित रखने के लिए प्रयास करें। धन्यवाद यान!

+0

इसे ठीक करें, धन्यवाद! –

+4

आप भी 'p.gca()। Cla() 'का सुझाव देना चाहेंगे, ताकि यदि आपके पास कोई आंकड़ा शीर्षक हो, आदि और आप उन सभी को दोबारा नहीं करना चाहते हैं, तो बस अक्ष को अपडेट करें। मुझे लगता है कि हिस्टोग्राम के डेटा को अपडेट करने का एक और जटिल तरीका भी है। – Yann

2

संपादित करें: डैनोडोनोवैन का उत्तर प्रदर्शन दृष्टिकोण से इस के लिए सबसे अधिक संभव है।

import matplotlib.pyplot as plt 
p = plt.figure() 

जो मामले में आप जो आप हर बार एक नया आंकड़ा बनाने सुनिश्चित करने के लिए बस आवश्यकता होगी:


आप नहीं दिखा कि कैसे p बनाई गई है, लेकिन मैं इसे अनुमान कुछ की तरह है । उदाहरण:

def simpledist(speclist,totalbugs,a): 
    data = [float(spec.pop)/float(totalbugs) for spec in speclist] 
    p = plt.figure() # let's have a new figure why don't we 
    p.hist(data) 
    p.savefig('/Home/s1215235/Documents/python/newfolder/' + str(a) + '.png') 
+0

क्षमा करें, पी pylab –

+0

कोई समस्या नहीं है। खुशी है कि आपको समस्या ठीक हो गई है। – bernie

2

आपके पास बस जो hold(doc) बंद

import pylab as p 
ax = p.gca() 
ax.hold(False) 

def simpledist(speclist,totalbugs,a): 
    data = [float(spec.pop)/float(totalbugs) for spec in speclist] 
    ax.hist(data) 
    ax.figure.savefig('/Home/s1215235/Documents/python/newfolder/' + str(a) + '.png') 

आप के लिए कुल्हाड़ियों साफ हो जाएगा बदल सकते हैं जब कभी आप एक नया साजिश जोड़ें।

यदि आपके पास अन्य कलाकारों का समूह है, और केवल सबसे हालिया को हटाना चाहते हैं, तो आप remove कलाकारों के उदाहरण functoin का उपयोग कर सकते हैं।

import pylab as p 
ax = p.gca() 
# draw a bunch of stuff onto the axse 

def simpledist(speclist,totalbugs,a): 
    data = [float(spec.pop)/float(totalbugs) for spec in speclist] 
    n, bins, h_art = ax.hist(data) 
    ax.figure.savefig('/Home/s1215235/Documents/python/newfolder/' + str(a) + '.png') 
    for ha in h_art: 
     h_a.remove() 
    # ax.figure.canvas.draw() # you might need this 
संबंधित मुद्दे