2015-05-07 13 views
5

Mam kilka wykresów generowanych przez mój kod. Chcę je wszystkie zapisać, ale chcę je tylko wyświetlić. Mogę zrobić część oszczędzającą, ale dostanie tylko jednego do pokazania, okazuje się bólem.Matplotlib - pokaż tylko jedną cyfrę

Chodziłam w kółko próbując to osiągnąć. Najbliżej było oczyścić wszystkie oprócz jednej z figur, ale wszystkie były wyświetlane, gdy próbowałem pokazać tylko jedną. Zaczynam myśleć, że to albo coś bardzo prostego, albo coś, co nie jest możliwe.

Ktoś wie, jak to osiągnąć?

Edycja: Dodano przykładowy kod. Przepraszam, że nie robiłem tego pierwotnie.

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

W celu ułatwienia, niektóre kod pomoże. http://stackoverflow.com/help/mcve – ODiogoSilva

+0

Moje przeprosiny, pierwotnie zamierzałem to zrobić, ale potem zdecydowałem, że wydaje się dość ogólny problem, który nie byłby potrzebny. Najwyraźniej się myliłem, a ja zaktualizuję główny post. – Steve

+0

Niestety nie można po prostu "usunąć" liczb, których nie chcemy wyświetlać, ponieważ mpl zachowuje odwołanie. I wyczyszczenie rysunku nie powstrzyma go przed wyświetleniem. – Alan

Odpowiedz

9

Możesz zamknąć każdą figurę zaraz po zapisaniu jej za pomocą plt.close(). Tylko pamiętaj, aby nie składać oświadczenia po ostatniej liczbie.

Twój kod będzie wyglądać następująco:

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

To jest! Gah, wiedziałem, że przeoczyłem coś naprawdę prostego. Myślałem, że polecenie plt.close() może działać tylko po wyświetleniu działek, nie zdawałem sobie sprawy, że zadziałało po ich zapisaniu. Dziękujemy! – Steve

+0

Moja przyjemność - z przyjemnością pomogę :) – mishaF

+1

Python 2.7 na Windows: to podejście generuje polecenie "nie można wywołać" zdarzenia: aplikacja została zniszczona podczas wykonywania "wygenerowanie zdarzenia $ w << ThemeChanged >>" (procedura "ttk :: ThemeChanged" linia 6) wywoływana z poziomu "ttk :: ThemeChanged" ' – Alan

Powiązane problemy