2015-05-07 27 views
5

Yani benim kod üreten bir kaç araziler var ediyorum bir değer gösteremez. Hepsini kaydetmek istiyorum, ama sadece bir tane göstermek istiyorum. Kurtarılan kısmı iyi yapabilirim, ancak sadece bir tanesine bakmak acı çektiriyor. Matplotlib - Sadece

bunu başarmak için çalışırken çevrelerinde yuvarlak sürdürmekteyiz. Elimden gelenin en iyisi rakamlardan birisini temizlemekti, ama hepsi bir tane göstermeye çalıştığımda gösterildi. Çok basit bir şey olduğunu düşünmeye başlıyorum ya da bakıyorum ya da mümkün değil.

Herkes bunu başarmak için nasıl biliyor?

Düzenleme: Eklenen örnek kod. Orijinal olarak yapmadığı için özür dilerim.

fig1 = plt.figure(1) 
    plt.plot([0, 1, 2, 3, 4], [0, 1, 2, 3, 4], label="Test", color='g') 
    plt.plot([0, 1, 2, 3, 4], [0, 1, 4, 9, 16], label="Other Test", color='r') 
    plt.grid(True) 

    fig1.savefig('Foo1.png') 

    fig2 = plt.figure(2) 
    plt.plot([0, 1, 2, 3, 4], [0, 5, 1, 9, 2], label="Test 2", color='g') 
    plt.plot([0, 1, 2, 3, 4], [0, 10, 50, 0, 10], label="Other Test 2", color='r') 
    plt.grid(True) 

    fig2.savefig('Foo2.png') 

    plt.show() 
+0

yardımcı olmak için, bazı kod yardımcı olacaktır. http://stackoverflow.com/help/mcve – ODiogoSilva

+0

Özür dilerim, ben aslen bunu amaçlanmıştır ama buna ihtiyaç olmaz oldukça genel bir sorunu gibiydi olarak daha sonra karar vermişti. Açıkçası yanılmışım ve ana gönderiyi güncelleyeceğim. – Steve

+0

Maalesef, görüntülemek istemediğiniz rakamları sadece gösteremezsiniz, çünkü mpl bir referansı saklar. Ve şeklin temizlenmesi, gösterilmesini engellemez. – Alan

cevap

9

Her bir rakamı, plt.close() kullanarak kaydedildikten hemen sonra kapatabilirsiniz. Sadece son rakamdan sonra yakın bir açıklama yapmadığınızdan emin olun.

Kodunuz aşağıdaki gibi görünecektir:

fig1 = plt.figure(1) 
plt.plot([0, 1, 2, 3, 4], [0, 1, 2, 3, 4], label="Test", color='g') 
plt.plot([0, 1, 2, 3, 4], [0, 1, 4, 9, 16], label="Other Test", color='r') 
plt.grid(True) 

fig1.savefig('Foo1.png') 
# add plt.close() after you've saved the figure 
plt.close() 

fig2 = plt.figure(2) 
plt.plot([0, 1, 2, 3, 4], [0, 5, 1, 9, 2], label="Test 2", color='g') 
plt.plot([0, 1, 2, 3, 4], [0, 10, 50, 0, 10], label="Other Test 2", color='r') 
plt.grid(True) 

fig2.savefig('Foo2.png') 

plt.show() 
+0

Bu kadar! Gah, gerçekten basit bir şeye baktığımı biliyordum. Plt.close() komutunun yalnızca parselleri gösterdikten sonra çalışabildiğini, onları kaydettikten sonra çalıştığını fark etmediğini düşündüm. Teşekkür ederiz! – Steve

+0

benim zevkim - yardımcı olmaktan mutluluk duyuyoruz :) – mishaF

+1

Windows üzerinde Python 2.7: bu yaklaşım "invoke edemiyor" olayını oluşturur "komutu: uygulama 'u çalıştırırken " olayını yok etti "event generate $ w << ThemeChanged >>" (prosedür "ttk :: ThemeChanged" satır 6) ' "ttk :: ThemeChanged" içinde çağrıldığında – Alan