2012-01-26 9 views
55

आउटपुट मैं matplotlib का उपयोग कर प्लॉट्स को बचाने की कोशिश कर रहा हूं; हालांकि, छवियां खाली बचत कर रही हैं।Matplotlib (pyplot) savefig खाली छवि

plt.subplot(121) 
plt.imshow(dataStack, cmap=mpl.cm.bone) 

plt.subplot(122) 
y = copy.deepcopy(tumorStack) 
y = np.ma.masked_where(y == 0, y) 

plt.imshow(dataStack, cmap=mpl.cm.bone) 
plt.imshow(y, cmap=mpl.cm.jet_r, interpolation='nearest') 

if T0 is not None: 
    plt.subplot(123) 
    plt.imshow(T0, cmap=mpl.cm.bone) 

    #plt.subplot(124) 
    #Autozoom 

#else: 
    #plt.subplot(124) 
    #Autozoom 

plt.show() 
plt.draw() 
plt.savefig('tessstttyyy.png', dpi=100) 

और tessstttyyy.png खाली (भी .jpg साथ की कोशिश की) है

उत्तर

107

सबसे पहले, क्या होता है जब T0 is not None:

यहाँ मेरी कोड है? मैं इसका परीक्षण करूंगा, फिर मैं plt.subplot() पर भेजे गए मानों को समायोजित करूंगा; हो सकता है कि मूल्य 131, 132, और 133, या मानों को आज़माएं जो T0 मौजूद हैं या नहीं।

दूसरा, plt.show() के बाद, एक नया आंकड़ा बनाया गया है। इस समस्या से निपटने के लिए, आपको

  1. कॉल plt.savefig('tessstttyyy.png', dpi=100) इससे पहले कि आप कॉल कर सकते हैं "वर्तमान आंकड़ा पाने के लिए" plt.gcf() बुला, तो आप इस Figure वस्तु पर savefig() कॉल कर सकते हैं द्वारा plt.show()

  2. आप show() से पहले आंकड़ा सहेजें किसी भी समय।

उदाहरण के लिए:

fig1 = plt.gcf() 
plt.show() 
plt.draw() 
fig1.savefig('tessstttyyy.png', dpi=100) 

अपने कोड में, 'tesssttyyy.png' खाली क्योंकि यह नई आंकड़ा की बचत है, जो करने के लिए कुछ भी नहीं साजिश रची गई है।

+0

T0 हिस्से को हटाने के भूल ... यह पहले से टिप्पणी की गयी है। – tylerthemiler

+1

हाँ, मैंने शो को पूरी तरह से हटा दिया और यह काम किया, यह समझ में आता है .... – tylerthemiler

+1

यह बहुत अच्छा है, एक आकर्षण की तरह काम करता है – denvar

11

plt.show() आना चाहिए के बाद plt.savefig()