Pytanie plt.show () wisi na OSX z Anacondy Python


import matplotlib.pyplot as plt
plt.figure()
plt.show()

... świerszcze. Tłumacz wisi i nie mogę tego przerwać.

Dotyczy to wersji Python 2.7.9 i Anaconda 2.2.0 (x86_64) w systemie OSX.

Czy dzieje się tak u kogokolwiek innego? Jak mogę rozwiązać ten problem?


11
2018-05-06 20:14


pochodzenie


Jesteś pewien, że tak plt.show() który wisi, a nie import? Ponieważ występuje problem z pamięcią podręczną czcionek w systemie OS X, do której adresowana jest odpowiedź to pytanie. - Lukas Graf
Import działa dobrze i, o ile mogę to stwierdzić, robi wszystko inne. Powiesić na pewno dzieje się z plt.show() - James Atwood
Wszystko działa dobrze, minęło kilka sekund, zanim pojawiło się okno. Czy korzystasz z trybu interaktywnego lub nieinteraktywnego? A jaki jest twój back-end? Czy uruchamiasz te linie ze skryptu w wierszu poleceń, czy wpisujesz je w interpreterze python? W moim doświadczeniu z OS-X, okna tworzone z linii poleceń często nie wychodzą na pierwszy plan. Czy to możliwe, że okno wykresu zostanie utworzone za innymi oknami lub ukryte w rogu? - titusjan
Nie, nigdzie nie ma okna. Backend to "MacOSX". Zdecydowanie wisi. - James Atwood
Ah, @titusjan ma świetny punkt. Teraz, gdy wspomniał o zapleczu, pamiętam, że miałem podobny problem, który został rozwiązany, gdy zmieniłem kopię backend: TkAgg w moim ~/.matplotlib/matplotlibrc. Możesz również użyć tego strzału pythonw nie jest dla ciebie zbyt wygodne. - Lukas Graf


Odpowiedzi:


Spróbuj uruchomić Python za pomocą pythonw zamiast python.


10
2018-05-07 19:19



Nie wiem, dlaczego to zadziałało, ale tak. Dziękuję Ci! - James Atwood
W systemie OS X musisz użyć pythonw za każdym razem, gdy używasz czegoś, co podpina się do systemu okienkowego OS X (takiego jak matplotlib), ponieważ musi "oszukać" OS X w myśleniu, że jest to Framework (używając python.app pakiet, który znajdziesz w anaconda informator). - asmeurer
Kolejną rzeczą, która powinna działać, jest użycie ipython, ponieważ automatycznie używa python.app. - asmeurer
Za pomocą ipython pracował dla mnie, dzięki @asmeurer. W przypadku skryptów zmieniłem linię hashbang na #!/usr/bin/env ipython i działa jak urok. - A.Wan


Jest to najprawdopodobniej problem z ustawieniem twojego zaplecza. Jeśli chcesz, aby działki wyświetlały się w linii (wewnątrz twojego notesu), importuj z dodaną linią:

import matplotlib.pyplot as plt
%matplotlib inline

Aby zaimportować wykresy interaktywnie inline (wewnątrz notebooka), należy zaimportować ten wiersz:

import matplotlib.pyplot as plt
%matplotlib notebook

Aby wyświetlić wykresy poza notebookiem (w nowym oknie), zaimportuj za pomocą tego wiersza:

import matplotlib.pyplot as plt
%matplotlib qt

UWAGA: Musisz zrestartować jądro, aby przełączyć się między wbudowanym notebookiem a zewnętrznym qt, aby uniknąć błędu: Ostrzeżenie: nie można zmienić na inny zestaw narzędzi GUI

Na koniec, jeśli problemy się utrzymają, poniższe informacje mogą pomóc w odkryciu, co się dzieje:

import matplotlib
matplotlib.get_backend()

Jeśli korzystasz z którejś z powyższych opcji, powinna wyświetlić jedną z poniższych opcji:

  • "moduł: //ipykernel.pylab.backend_inline"
  • "nbAgg"
  • "Qt4Agg"

0
2017-10-21 12:15





Dodaj to na początku swojego iPython:

% pylab inline

-1
2018-05-13 22:03