2015-02-21 21 views
22

Ho un problema con PyCharm e matplotlib che non riesco a correggere.PyCharm non aprirà correttamente i grafici matplotlib

Quando uso PyCharm e ipython come console attraverso cui i comandi vengono interpretati, i grafici non vengono visualizzati fino a quando non salvi la figura. Tuttavia, questo non accade quando provo a tracciare da fuori PyCharm.

Ecco un processo che exmaple fallisce in PyCharm:

In[2]: import matplotlib.pyplot as plt 
Backend MacOSX is interactive backend. Turning interactive mode on. 

In[3]: plt.plot([1,2,3,4],[1,4,9,16], 'ro') 

Questa si aprirà una finestra con l'etichetta "Figura 1". Tuttavia, non viene visualizzato alcun grafico e il mouse passa allo SPOD quando si passa su di esso (io sono su un Mac). A questo punto, posso provare

In[4]: plt.show() 

ma non viene ancora visualizzato alcun grafico. Tuttavia, se io poi faccio:

In[5]: plt.savefig('foo.png') 

non solo una figura di essere salvati con quel nome, la trama appare nella finestra di Figura 1. Si noti che PyCharm ha attivato la modalità interattiva e che ha riconosciuto che il mio back-end è (dovrebbe essere?) MacOS.

Ho usato lo stesso processo attraverso una console python e ipython in una sessione terminale generica, e anche tramite emacs, e in tutti i casi il grafico appare chiamando la linea plt.plot(). Non è richiesta la chiamata plt.show().

Infatti, posso persino usare il terminale tramite PyCharm e ottenere la trama desiderata. Una risposta è che dovrei semplicemente fare il mio plotting usando questi metodi e ignorare PyCharm. Supponiamo, tuttavia, di trovare le "campane e fischietti" di PyCharm abbastanza accattivanti che mi piacerebbe davvero usarlo come IDE, ma voglio essere in grado di esaminare i complotti senza dover passare attraverso il fastidio plt.savefig() (dato che non lo faccio t voglio mantenere ogni trama che tento).

Ho anche provato a passare i backend tramite plt.switch_backend(). Ho provato tutte le opzioni elencate, tutte fallite per ragioni che hanno principalmente a che fare con il non aver installato alcuni pacchetti o essere sul sistema sbagliato. Ho non provato a installare qualcosa per utilizzare un nuovo back-end, quindi non so se un altro back-end correttamente installato possa risolvere questo problema. Più che disposti a provare, ovviamente!

dettagli di sistema:

MacBookPro Retina metà del 2012, 16 GB di RAM, Yosemite 10.10

Python 3.4.2

ipython 2.3.1

PyCharm Community Edition 4.0.4

Si noti che ho rivisto e tentato variazioni di correzioni dalle seguenti domande:

Python plots won't open

How to switch backends in matlab/python

PyCharm + Matplotlib?

Matplotlib figure stucked (grey window)

matplotlib does not show my drawings although I call pyplot.show()

EDIT Come indicato nel commento di seguito, questo sembra essere un bug, non un errore di impostazione da parte mia. In quanto tale, sto modificando questa domanda per chiedere se esiste una soluzione nota.

+3

Ho duplicato questo comportamento con Pycharm 4.0 Pro su OSX 10.10. Sembra essere un problema all'interno della console Python di Python, come indicato da https://youtrack.jetbrains.com/issue/PY-14547. – Jason

+0

Quindi forse la risposta sta lasciando perdere PyCharm. Bleargh. Ho modificato la mia domanda per riflettere questo problema e per chiedere se esiste una soluzione nota. –

+0

Perché eliminare pycharm, dal momento che Console è fondamentalmente un duplicato della funzionalità all'interno di Terminal? Puoi fare tutto all'interno del terminale che puoi con Console ... assicurati di essere prima nella giusta cartella. – Jason

risposta

1

C'è un problema noto con PyCharm (tra cui ultima versione V5) sotto OS X che è causato dal modo in cui Python può essere installato su OS X.

La maggior parte delle persone lo fanno installare Python 2 e 3 usando brew che ha anche sostituisce l'interprete Python predefinito da utilizzare dalla riga di comando. Tuttavia, l'interprete predefinito e gli eseguibili pip non vengono sostituiti anche per le applicazioni GUI.

Se si desidera una risposta più specifica si dovrà documentare correttamente il vostro ambiente con:

  • fare which -a python da linea di comando
  • fare which -a pip da linea di comando
  • fare print(sys.path) e print(os.env) dall'interno PyCharm e console e confrontarli.

Probabilmente facendo questo ti accorgerai che è stata caricata la versione sbagliata dei moduli.

+0

Sto usando PyCharm Community Edition 2016.2 con IPython 5.0 e un interprete Python 3.5.2 su Mac OsX 10.11. Ho controllato tutti i percorsi e corrispondono tutti, ma ho ancora lo stesso problema. Posso aprire una figura w/plt.figure(), ma ho appena ottenuto SPOD. La chiamata a plt.plot() mostra gli oggetti linee, ma non traccia mai una finestra (se prima era presente o meno). Console sembra _really_ lento da allora in poi. Utilizzo del backend MacOSX. – jspencer

Problemi correlati