web-dev-qa-db-fra.com

Comment puis-je obtenir à nouveau des tracés interactifs dans Spyder / IPython / matplotlib?

Je suis passé de Python (x, y) 2.7.2.3 à 2.7.6. sous Windows 7 (et j'étais heureux de voir que je peux enfin taper function_name? et voir la docstring dans l'inspecteur d'objets. encore) mais le tracé ne fonctionne plus comme avant.

Auparavant (Spyder 2.1.9, IPython 0.10.2, matplotlib 1.2.1), lors du tracé ce script , par exemple, les tracés secondaires étaient tracés côte à côte dans une fenêtre interactive:

enter image description here

Maintenant (Spyder 2.2.5, IPython 1.2.0, Matplotlib 1.3.1), lorsque je tente de tracer des choses, les sous-graphes sont créés sous forme de minuscules PNG en ligne, ce qui est un changement dans IPython :

tiny inline PNGs

Alors je suis allé dans les options et j'ai trouvé ceci:

graphics options

ce qui semble indiquer que je peux récupérer les anciennes parcelles interactives, avec les 4 sous-parcelles affichées côte à côte, mais lorsque je passe en mode "Automatique" et que j'essaie de tracer quelque chose, cela ne fait rien. Pas de parcelles du tout.

Si je bascule cette liste déroulante sur Qt ou décoche la case "Activer le support", elle trace uniquement la première parcelle, ou une partie de celle-ci, puis s'arrête:

enter image description here

Comment puis-je obtenir l'ancien comportement de 4 sous-parcelles côte à côte dans une figure unique avec laquelle je peux interagir?

79
endolith

Changez le backend en automatique:

Outils> Préférences> Console IPython> Graphiques> Arrière-plan graphique> Arrière-plan: automatique

Puis fermez et ouvrez Spyder.

116
Victor Arellano

Vous pouvez rapidement contrôler cela en tapant commandes magiques intégrées dans la console IPython de Spyder, que je trouve plus rapide que de les sélectionner dans le menu Préférences. Les modifications prennent effet immédiatement, sans qu'il soit nécessaire de redémarrer Spyder ou le noyau.

Pour basculer vers des tracés "automatiques" (c'est-à-dire interactifs), tapez:

%matplotlib auto

alors si vous voulez revenir à "inline", tapez ceci:

%matplotlib inline

(Remarque: ces commandes ne fonctionnent pas dans les consoles non IPython)

Voir plus de fond sur ce sujet: But de "% matplotlib inline"

38
Mike T

Après application: Outils> Préférences> Graphiques> Arrière-plan> Automatique Redémarrez simplement le noyau enter image description here

Et vous obtiendrez sûrement parcelle interactive. Bon codage!

7
Archit Pandey

Comme indiqué dans les commentaires, le problème réside dans votre script. En fait, il y a 2 problèmes:

  • Il y a une erreur matplotlib, je suppose que vous passez un argument en tant que None quelque part. Peut-être en raison de la defaultdict?
  • Vous appelez show() après chaque sous-parcelle. show() devrait être appelé une fois à la fin de votre script. L'alternative consiste à utiliser le mode interactif, recherchez ion dans la documentation de matplotlib.
5