web-dev-qa-db-de.com

Wie erhalte ich wieder interaktive Plots in Spyder / IPython / matplotlib?

Ich habe ein Upgrade von Python (x, y) 2.7.2.3 auf 2.7.6. in Windows 7 durchgeführt (und war froh zu sehen, dass ich endlich function_name? und sehen Sie sich den Docstring im Objektinspektor noch einmal an), aber jetzt funktioniert das Plotten nicht mehr so ​​wie früher.

Früher (Spyder 2.1.9, IPython 0.10.2, matplotlib 1.2.1), wenn ich dieses Skript plottete, plottete es zum Beispiel die Nebenhandlungen nebeneinander in einem interaktiven Fenster:

enter image description here

Wenn ich jetzt versuche, Dinge zu zeichnen (Spyder 2.2.5, IPython 1.2.0, Matplotlib 1.3.1), werden die Unterzeichnungen als winzige Inline-PNGs dargestellt. Dies ist ein Änderung in IPython :

tiny inline PNGs

Also ging ich in Optionen und fand Folgendes:

graphics options

was zu sagen scheint, dass ich die alten interaktiven Diagramme mit den 4 nebeneinander angezeigten Unterdiagrammen zurückbekomme, aber wenn ich auf "Automatisch" umschalte und versuche, etwas zu zeichnen, tut es nichts. Überhaupt keine Grundstücke.

Wenn ich diese Dropdown-Liste auf Qt ändere oder das Kontrollkästchen "Unterstützung aktivieren" deaktiviere, werden nur die erste Teilzeichnung oder ein Teil davon geplottet und dann gestoppt:

enter image description here

Wie erhalte ich das alte Verhalten von 4 nebeneinander angeordneten Untergrundstücken in einer einzelnen Figur, mit der ich interagieren kann?

79
endolith

Ändere das Backend auf automatisch:

Extras> Einstellungen> IPython-Konsole> Grafik> Grafik-Backend> Backend: Automatisch

Dann schließen und öffnen Sie Spyder.

116
Victor Arellano

Sie können dies schnell steuern, indem Sie integrierte Zauberbefehle in die IPython-Konsole von Spyder eingeben, die ich schneller finde, als diese im Menü "Einstellungen" auszuwählen. Änderungen werden sofort wirksam, ohne dass Spyder oder der Kernel neu gestartet werden müssen.

Geben Sie Folgendes ein, um zu "automatischen" (d. H. Interaktiven) Darstellungen zu wechseln:

%matplotlib auto

wenn Sie dann wieder zu "Inline" wechseln möchten, geben Sie Folgendes ein:

%matplotlib inline

(Hinweis: Diese Befehle funktionieren nicht auf Nicht-IPython-Konsolen.)

Weitere Hintergrundinformationen zu diesem Thema: Zweck von "% matplotlib inline"

38
Mike T

Nach dem Anwenden: Extras> Einstellungen> Grafik> Backend> Automatisch Starten Sie einfach den Kernel neu enter image description here

Und Sie werden sicherlich Interactive Plot bekommen. Viel Spaß beim Codieren!

7
Archit Pandey

Wie in den Kommentaren erwähnt, liegt das Problem in Ihrem Skript. Eigentlich gibt es 2 Probleme:

  • Es liegt ein matplotlib-Fehler vor. Vermutlich übergeben Sie ein Argument irgendwo als None. Möglicherweise wegen des defaultdict?
  • Sie rufen show() nach jedem Untergrund auf. show() sollte einmal am Ende Ihres Skripts aufgerufen werden. Alternativ können Sie den interaktiven Modus verwenden und in der matplotlib-Dokumentation nach ion suchen.
5