Neues in Matplotlib 1.1 (02. Nov. 2011)#

Hinweis

matplotlib 1.1 unterstützt Python 2.4 bis 2.7

Sankey-Diagramme#

Kevin Davies hat Yannick Copins ursprüngliches Sankey-Beispiel zu einem Modul (sankey) erweitert und neue Beispiele bereitgestellt (Die Sankey-Klasse, Lange Kette von Verbindungen mit Sankey, Rankine-Kreisprozess).

../../_images/sphx_glr_sankey_rankine_001.png

Animation#

Ryan May hat ein Backend-unabhängiges Framework zum Erstellen animierter Grafiken geschrieben. Das Modul animation soll die bisher in den Beispielen aufgeführten Backend-spezifischen Beispiele ersetzen. Beispiele, die das neue Framework verwenden, finden Sie unter Animation; siehe das faszinierende double_pendulum <gallery/animation/double_pendulum_sgskip.py>, das matplotlib.animation.Animation.save() verwendet, um den folgenden Film zu erstellen.

Dies sollte als Beta-Version des Frameworks betrachtet werden; bitte probieren Sie es aus und geben Sie Feedback.

Tight Layout#

Ein häufiges Problem, das von Matplotlib-Benutzern angesprochen wird, ist das Fehlen einer Layout-Engine, um die Elemente von Diagrammen schön anzuordnen. Während Matplotlib weiterhin der Philosophie folgt, den Benutzern die vollständige Kontrolle über die Platzierung von Diagrammelementen zu geben, hat Jae-Joon Lee das Modul matplotlib.tight_layout erstellt und einen neuen Befehl tight_layout() eingeführt, um die häufigsten Layout-Probleme zu lösen.

(Quellcode, 2x.png, png)

(2x.png, png)

Die Verwendung dieser Funktionalität kann so einfach sein wie

plt.tight_layout()

und es wird der Abstand zwischen den Subplots angepasst, sodass sich die Achsenbeschriftungen nicht mit benachbarten Subplots überschneiden. Ein Leitfaden für Tight Layout wurde erstellt, um die Verwendung dieses neuen Werkzeugs zu zeigen.

PyQT4, PySide und IPython#

Gerald Storer hat das Qt4-Backend sowohl mit PySide als auch mit PyQT4 kompatibel gemacht. Derzeit unterstützt PySide jedoch nicht den PyOS_InputHook-Mechanismus zur Behandlung von GUI-Ereignissen während der Wartezeit auf Texteingaben, sodass es nicht mit der neuen Version 0.11 von IPython verwendet werden kann. Bis diese Funktion in PySide erscheint, sollten IPython-Benutzer den PyQT4-Wrapper für QT4 verwenden, der standardmäßig für Matplotlib bleibt.

Ein rcParam-Eintrag, "backend.qt4", wurde hinzugefügt, damit Benutzer PyQt4, PyQt4v2 oder PySide auswählen können. Letztere beiden verwenden die Qt-API der Version 2. In den meisten Fällen können Benutzer diese rcParam-Variable ignorieren; sie ist zur Unterstützung beim Testen und zur Steuerung für Benutzer gedacht, die Matplotlib in eine PyQt4- oder PySide-App einbetten.

Legende#

Jae-Joon Lee hat die Plot-Legenden verbessert. Erstens werden Legenden für komplexe Plots wie stem()-Plots nun korrekt angezeigt. Zweitens wurde die "beste" Platzierung einer Legende in Anwesenheit von NANs verbessert.

Siehe den Leitfaden für Legenden für detailliertere Erklärungen und Beispiele.

../../_images/sphx_glr_legend_demo_004.png

mplot3d#

Um das 3D-Plotten in Matplotlib genauso einfach wie das 2D-Plotten zu machen, hat Ben Root mehrere Verbesserungen am Modul mplot3d vorgenommen.

  • Axes3D wurde verbessert, um die Klasse näher an die Funktionsparität mit regulären Achsenobjekten zu bringen.

  • Die Dokumentation für Das mplot3d Toolkit wurde erheblich erweitert.

  • Achsenbeschriftungen und Ausrichtung verbessert.

  • Die meisten 3D-Plotfunktionen unterstützen jetzt leere Eingaben.

  • Anzeige des Tick-Offsets hinzugefügt.

../../_images/sphx_glr_offset_001.png
  • contourf() erhält die Schlüsselwörter zdir und offset. Sie können jetzt Folgendes tun:

../../_images/sphx_glr_contourf3d_2_001.png

Numerix-Unterstützung entfernt#

Nach mehr als zwei Jahren der Deprecation-Warnungen wurde die Numerix-Unterstützung aus Matplotlib vollständig entfernt.

Marker#

Die Liste der verfügbaren Marker für plot() und scatter() wurde zusammengeführt. Obwohl sie größtenteils ähnlich waren, gab es für die eine Funktion Marker, die für die andere nicht existierten. Diese Zusammenführung führte zu einem Konflikt für den 'd'-Diamantmarker. Jetzt wird 'd' immer als "dünner" Diamant interpretiert, während 'D' als "normaler" Diamant interpretiert wird.

Vielen Dank an Michael Droettboom für diese Bemühungen.

Weitere Verbesserungen#

  • Einheitliche Unterstützung für polare Achsen und arrow()

  • PolarAxes erhält Getter und Setter für "theta_direction" und "theta_offset", um es zu ermöglichen, dass Theta sowohl im Uhrzeigersinn als auch gegen den Uhrzeigersinn verläuft und um festzulegen, wo Null Grad platziert werden soll. set_theta_zero_location() ist eine zusätzliche Komfortfunktion.

  • Fehler bei der Argumentenbehandlung für Tri-Funktionen wie tripcolor() behoben.

  • Parameter axes.labelweight zu rcParams hinzugefügt.

  • Für imshow() wird bei interpolation='nearest' nun immer eine Interpolation durchgeführt. Eine Option "none" wurde hinzugefügt, um überhaupt keine Interpolation anzuzeigen.

  • Ein Fehler in der Hammer-Projektion wurde behoben.

  • clabel für contour() akzeptiert jetzt eine aufrufbare Funktion. Vielen Dank an Daniel Hyams für den ursprünglichen Patch.

  • Jae-Joon Lee hat die Klassen HBoxDivider und VBoxDivider hinzugefügt.

  • Christoph Gohlke hat den Speicherverbrauch in imshow() reduziert.

  • scatter() akzeptiert jetzt leere Eingaben.

  • Das Verhalten für die 'symlog'-Skala wurde korrigiert, dies kann jedoch zu geringfügigen Änderungen an bestehenden Plots führen. Diese Arbeit wurde von ssyr verfeinert.

  • Peter Butterworth hat den benannten Figure-Support zu figure() hinzugefügt.

  • Michiel de Hoon hat das MacOSX-Backend modifiziert, um sein interaktives Verhalten mit den anderen Backends konsistent zu machen.

  • Pim Schellart hat eine neue Farbkarte namens "cubehelix" hinzugefügt. Sameer Grover hat ebenfalls eine Farbkarte namens "coolwarm" hinzugefügt. Sehen Sie sie und alle anderen Farbkarte hier.

  • Viele Fehlerbehebungen und Dokumentationsverbesserungen.