API-Änderungen in 1.3.x#

Änderungen in 1.3.1#

Es ist selten, dass wir in einer Mikroveröffentlichung eine API-Änderung vornehmen, aber für 1.3.1 wurde seit 1.3.0 die folgende Änderung vorgenommen:

  • text.Text.cached (wurde zum Zwischenspeichern von Schriftobjekten verwendet) wurde zu einer privaten Variable gemacht. Neben dem offensichtlichen Vorteil der Kapselung entfernt dies dieses verwirrend aussehende Element aus der Dokumentation.

  • Die Methode hist() gibt nun immer die Bin-Besetzungen als Array vom Typ float zurück. Zuvor war dies manchmal ein Array vom Typ int, abhängig vom Aufruf.

Code-Entfernung#

  • Die folgenden Elemente, die in Version 1.2 oder früher als veraltet gekennzeichnet wurden, wurden nun vollständig entfernt.

    • Die Qt 3.x-Backends (qt und qtagg) wurden zugunsten der Qt 4.x-Backends (qt4 und qt4agg) entfernt.

    • Die Backends FltkAgg und Emf wurden entfernt.

    • Das Modul matplotlib.nxutils wurde entfernt. Verwenden Sie stattdessen die Funktionalität unter matplotlib.path.Path.contains_point und ähnlichen Funktionen.

    • Verwenden Sie anstelle von axes.Axes.get_frame nun axes.Axes.patch.

    • Die folgenden Schlüsselwortargumente der Funktion legend wurden umbenannt:

      • pad -> borderpad

      • labelsep -> labelspacing

      • handlelen -> handlelength

      • handletextsep -> handletextpad

      • axespad -> borderaxespad

      In diesem Zusammenhang wurden die folgenden rcParams entfernt:

      • legend.pad,

      • legend.labelsep,

      • legend.handlelen,

      • legend.handletextsep und

      • legend.axespad

    • Für die Funktion hist verwenden Sie anstelle von width nun rwidth (relative Breite).

    • Bei patches.Circle wurde das Schlüsselwortargument resolution entfernt. Für einen Kreis, der aus Liniensegmenten besteht, verwenden Sie patches.CirclePolygon.

    • Die Druckfunktionen im Wx-Backend wurden aufgrund des Aufwands, sie auf dem neuesten Stand zu halten, entfernt.

    • mlab.liaupunov wurde entfernt.

    • mlab.save, mlab.load, pylab.save und pylab.load wurden entfernt. Wir empfehlen stattdessen die Verwendung von numpy.savetxt und numpy.loadtxt.

    • widgets.HorizontalSpanSelector wurde entfernt. Verwenden Sie stattdessen widgets.SpanSelector.

Code-Veralterung#

Code-Änderungen#

  • Patch unterstützt nun vollständig die Verwendung von RGBA-Werten für seine Attribute facecolor und edgecolor, was es ermöglicht, dass Flächen und Kanten unterschiedliche Alpha-Werte haben. Wenn das Attribut alpha des Patch-Objekts auf etwas anderes als None gesetzt ist, überschreibt dieser Wert jeden Alpha-Kanalwert sowohl in den Flächen- als auch in den Kantenfarben. Zuvor, wenn Patch alpha=None hatte, wurde die Alpha-Komponente von edgecolor sowohl auf die Kante als auch auf die Fläche angewendet.

  • Das optionale Argument isRGB für set_foreground() (und die anderen GraphicsContext-Klassen, die davon erben) wurde in isRGBA umbenannt und sollte nun nur noch auf True gesetzt werden, wenn das fg-Farbar-gument bekanntermaßen ein RGBA-Tupel ist.

  • Für Patch ist der verwendete capstyle nun butt, um mit dem Standardwert für die meisten anderen Objekte übereinzustimmen und Probleme mit nicht-soliden linestyle zu vermeiden, die bei Verwendung einer großen linewidth als solide erscheinen. Zuvor verwendete Patch capstyle='projecting'.

  • Path-Objekte können nun als schreibgeschützt markiert werden, indem readonly=True an den Konstruktor übergeben wird. Die integrierten Pfad-Singletons, die über die Klassenmethoden Path.unit* erhalten werden, geben schreibgeschützte Pfade zurück. Wenn Ihr Code diese modifiziert hat, müssen Sie zuerst eine tiefe Kopie erstellen, entweder mit

    import copy
    path = copy.deepcopy(Path.unit_circle())
    
    # or
    
    path = Path.unit_circle().deepcopy()
    

    Das tiefe Kopieren eines Path erstellt immer einen bearbeitbaren (d.h. nicht schreibgeschützten) Path.

  • Die Liste bei Path.NUM_VERTICES wurde durch ein Wörterbuch ersetzt, das Pfadcodes auf die Anzahl der erwarteten Vertices unter NUM_VERTICES_FOR_CODE abbildet.

  • Zur Unterstützung von XKCD-Stil-Plots wurde die Signatur der Methode matplotlib.path.cleanup_path aktualisiert, sodass sie ein Sketch-Argument erfordert. Benutzer von matplotlib.path.cleanup_path werden ermutigt, die neue Pfadmethode cleaned() zu verwenden.

  • Datenlimits auf einem Plot beginnen nun mit einem Zustand von "Null"-Grenzwerten anstelle von Grenzen im Bereich (0, 1). Dies hat Auswirkungen auf Künstler, die Grenzen nur in einer Richtung steuern, wie z. B. axes.Axes.axvline und axes.Axes.axhline, da ihre Grenzen nicht mehr auch den Bereich (0, 1) umfassen. Dies behebt einige Probleme, bei denen die berechneten Grenzen von der Reihenfolge abhingen, in der Künstler zu den Achsen hinzugefügt wurden.

  • Ein Fehler beim Setzen der Position für die rechte/obere Achse mit Datentyp wurde behoben. Zuvor wurde die rechte oder obere Achse mit einem Datenversatz von +1 gezeichnet.

  • Bei FancyArrow wurde die Standard-Pfeilspitzenbreite head_width vergrößert, um eine sichtbare Pfeilspitze zu erzeugen. Der neue Wert dieses kwargs ist head_width = 20 * width.

  • Es ist nun möglich, Anzahl der Level + 1 Farben im Fall von extend='both' für contourf (oder nur Anzahl der Level Farben für einen Extend-Wert min oder max) bereitzustellen, so dass set_under und set_over der resultierenden Colormap entsprechend definiert sind. Jede andere Anzahl von Farben verhält sich weiterhin wie zuvor (wenn mehr Farben als Level bereitgestellt werden, werden die Farben nicht verwendet). Eine ähnliche Änderung wurde für contour vorgenommen, wo extend='both' Anzahl der Level + 2 Farben erwarten würde.

  • Ein neues Schlüsselwort extendrect in colorbar() und ColorbarBase ermöglicht die Steuerung der Form von Colorbar-Erweiterungen.

  • Die Erweiterung von MultiCursor auf sowohl vertikale (Standard) als auch/oder horizontale Cursor implizierte, dass self.line durch self.vline für vertikale Cursorlinien ersetzt wurde und self.hline für die horizontalen Cursorlinien hinzugefügt wurde.

  • Auf POSIX-Plattformen löst die Funktion matplotlib.cbook.report_memory NotImplementedError anstelle von OSError aus, wenn der Befehl ps nicht ausgeführt werden kann.

  • Die Funktion matplotlib.cbook.check_output wurde nach matplotlib.compat.subprocess verschoben.

Konfiguration und rcParams#

  • Unter Linux befindet sich die benutzerspezifische Konfigurationsdatei matplotlibrc nun in ~/.config/matplotlib/matplotlibrc, um der XDG Base Directory Specification zu entsprechen.

  • Die rcParams font.* wirken sich nun nur noch auf Textobjekte aus, die nach der Einstellung des rcParams erstellt wurden, und wirken sich nicht mehr rückwirkend auf bereits vorhandene Textobjekte aus. Dies bringt ihr Verhalten mit den meisten anderen rcParams in Einklang.

  • Der Aufruf von grid() in matplotlib.pyplot.plotfile wurde entfernt. Um das Raster der Achsen zu zeichnen, setzen Sie den rcParam axes.grid auf True oder rufen Sie grid() explizit auf.