web-dev-qa-db-fra.com

PyCharm n'ouvrira pas correctement les tracés matplotlib

J'ai un problème avec PyCharm et matplotlib que je n'arrive pas à corriger.

Lorsque j'utilise PyCharm et ipython comme console à travers laquelle les commandes sont interprétées, les tracés n'apparaissent pas tant que je n'ai pas enregistré la figure. Cependant, cela ne se produit pas lorsque j'essaie de tracer depuis l'extérieur de PyCharm.

Voici un processus exmaple qui échoue dans 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')

Ceci ouvrira une fenêtre avec l'étiquette "Figure 1". Cependant, aucun tracé n'apparaît et la souris bascule vers le SPOD lorsque vous passez la souris dessus (je suis sur un Mac). À ce stade, je peux essayer

In[4]: plt.show()

mais aucun complot n'apparaît. Cependant , si je le fais alors:

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

non seulement une figure est enregistrée avec ce nom, l'intrigue apparaît dans la fenêtre Figure 1. Notez que PyCharm a activé le mode interactif et qu'il a reconnu que mon backend est (devrait être?) MacOS.

J'ai utilisé le même processus à la fois via une console python et ipython dans une session de terminal générique, et même via emacs, et dans tous les cas, l'intrigue apparaît lors de l'appel de la fonction plt.plot() Aucun appel à plt.show() n'est requis.

En effet, je peux même utiliser le terminal via PyCharm et obtenir l'intrigue souhaitée. Une réponse est que je devrais simplement faire mon tracé en utilisant ces méthodes et ignorer PyCharm. Supposons, cependant, que je trouve les "cloches et sifflets" de PyCharm suffisamment attrayants pour que j'aimerais vraiment l'utiliser comme mon IDE, mais que je souhaite pouvoir examiner des tracés sans avoir à passer par la plt.savefig() tracas (puisque je ne veux pas avoir à garder chaque intrigue que j'essaie).

J'ai également essayé de basculer les backends via plt.switch_backend(). J'ai essayé toutes les options répertoriées, qui échouent toutes pour des raisons principalement liées au fait de ne pas avoir certains packages installés ou d'être sur le mauvais système. Je n'ai pas essayé d'installer quoi que ce soit pour utiliser un nouveau backend, donc je ne sais pas si un autre backend correctement installé résoudrait ce problème. Plus que disposé à essayer, bien sûr!

Détails du système:

MacBookPro Retina mi-2012, 16 Go de RAM, Yosemite 10.10

Python 3.4.2

ipython 2.3.1

PyCharm Community Edition 4.0.4

Notez que j'ai examiné et tenté des variantes de correctifs à partir des questions suivantes:

les tracés Python ne s'ouvriront pas

Comment changer de backends dans matlab/python

PyCharm + Matplotlib?

Figure Matplotlib coincée (fenêtre grise)

matplotlib n'affiche pas mes dessins bien que j'appelle pyplot.show ()

[~ # ~] modifier [~ # ~] Comme indiqué dans le commentaire ci-dessous, cela semble être un bug , pas un échec de réglage de ma part. En tant que tel, je modifie cette question pour demander s'il existe une solution de contournement connue.

24
Savage Henry

Il existe un problème connu avec PyCharm (y compris la dernière version v5) sous OS X qui est dû à la façon dont Python peut être installé sur OS X.

La plupart des gens installent Python 2 et 3 en utilisant brew qui remplace également l'interpréteur par défaut Python à utiliser à partir de la ligne de commande. l'interpréteur par défaut et les exécutables pip ne sont pas également remplacés pour les applications GUI.

Si vous souhaitez une réponse plus précise, vous devrez documenter correctement votre environnement avec:

  • faire which -a python à partir de la ligne de commande
  • faire which -a pip à partir de la ligne de commande
  • faites print(sys.path) et print(os.env) depuis PyCharm et la console, et comparez-les.

Probablement en faisant cela, vous vous rendrez compte que la mauvaise version des modules est chargée.

1
sorin