2012-11-26 15 views
18

Pod koniec ostatniej funkcji, którą wywołuję w jednym z moich programów, mam następujący kod do wykreślenia prostego koloru wydruku.plt.show() powodujące zawieszenie terminala

plt.figure() 
plt.pcolormesh(X,Y,Z) 
plt.colorbar() 
plt.show() 

Powtórzenia Wracam do głównego i mój program jest kompletny. Wykres wyświetla się zgodnie z oczekiwaniami, jednak kiedy go zamykam za pomocą przycisku x w rogu (na ubuntu), mój program się nie kończy. Po prostu zawiesza się z uruchomionym procesem. Jak mogę to poprawić?

+0

Szybki i brudny rozwiązaniem mogłoby być spróbuj użyć 'plt.draw()' zamiast 'plt.show()'. 'show()' ładuje wszystkie interaktywne narzędzia, gdzie 'draw()' powinno być prostą przeglądarką, która może grać ładniej z resztą twojego programu. – jozzas

+0

Również, której wersji Matplotlib używasz? Wersja 1.0.0 wprowadziła kilka zmian w 'show()', aby uczynić go bardziej kompatybilnym z tym, co chcesz zrobić. [Zobacz dokumentację] (http://matplotlib.org/faq/howto_faq.html#use-show), aby uzyskać więcej informacji. – jozzas

+2

Używasz ipython lub jakiejś innej przyjaznej konsoli Matplotlib, która poprawnie obsługuje wątki GUI? – DaveP

Odpowiedz

18

Twój matplotlib może być uruchomiony w non-interactive mode z jakiegoś powodu. Nie jestem pewien, jak zapobiegać, że w lokalnej konfiguracji, ale jeśli dodać albo to:

plt.ion() 

lub to:

matplotlib.interactive(True) 

gdzieś na początku skryptu, należy zmienić zachowanie twoich działek.

1

W trybie interaktywnym, musisz to na czele pliku:

import matplotlib 
matplotlib.use("TkAgg") 
Powiązane problemy