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 Typfloatzurück. Zuvor war dies manchmal ein Array vom Typint, 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 (
qtundqtagg) wurden zugunsten der Qt 4.x-Backends (qt4undqt4agg) entfernt.Die Backends FltkAgg und Emf wurden entfernt.
Das Modul
matplotlib.nxutilswurde entfernt. Verwenden Sie stattdessen die Funktionalität untermatplotlib.path.Path.contains_pointund ähnlichen Funktionen.Verwenden Sie anstelle von
axes.Axes.get_framenunaxes.Axes.patch.Die folgenden Schlüsselwortargumente der Funktion
legendwurden 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.handletextsepundlegend.axespad
Für die Funktion
histverwenden Sie anstelle von width nun rwidth (relative Breite).Bei
patches.Circlewurde das Schlüsselwortargument resolution entfernt. Für einen Kreis, der aus Liniensegmenten besteht, verwenden Siepatches.CirclePolygon.Die Druckfunktionen im Wx-Backend wurden aufgrund des Aufwands, sie auf dem neuesten Stand zu halten, entfernt.
mlab.liaupunovwurde entfernt.mlab.save,mlab.load,pylab.saveundpylab.loadwurden entfernt. Wir empfehlen stattdessen die Verwendung vonnumpy.savetxtundnumpy.loadtxt.widgets.HorizontalSpanSelectorwurde entfernt. Verwenden Sie stattdessenwidgets.SpanSelector.
Code-Veralterung#
Das CocoaAgg-Backend wurde als veraltet markiert, mit der Möglichkeit, es in einer zukünftigen Version zu löschen oder wiederzubeleben.
Die Top-Level-Funktionen in
matplotlib.path, die in C++ implementiert sind, waren nie als öffentlich gedacht. Stattdessen sollten Benutzer die Python-Wrapper für sie in den Klassenpath.Pathundcollections.Collectionverwenden. Verwenden Sie die folgende Zuordnung, um Ihren Code zu aktualisieren:point_in_path->path.Path.contains_pointget_path_extents->path.Path.get_extentspoint_in_path_collection->collections.Collection.containspath_in_path->path.Path.contains_pathpath_intersects_path->path.Path.intersects_pathconvert_path_to_polygons->path.Path.to_polygonscleanup_path->path.Path.cleanedpoints_in_path->path.Path.contains_pointsclip_path_to_rect->path.Path.clip_to_bbox
matplotlib.colors.normalizeundmatplotlib.colors.no_normwurden zugunsten vonmatplotlib.colors.Normalizebzw.matplotlib.colors.NoNormals veraltet markiert.Die Methode
set_colorbarder KlasseScalarMappableist nun veraltet. Stattdessen sollte das Attributmatplotlib.cm.ScalarMappable.colorbarverwendet werden. In früheren Matplotlib-Versionen war dieses Attribut ein undokumentiertes Tupel aus(colorbar_instance, colorbar_axes), ist aber jetzt nur nochcolorbar_instance. Um die Colorbar-Achsen zu erhalten, kann einfach das Attributmatplotlib.colorbar.ColorbarBase.axeiner Colorbar-Instanz verwendet werden.Das Modul
matplotlib.mplist nun veraltet. Wer dieses Modul verwendet hat, sollte zuimport matplotlib as mplwechseln.
Code-Änderungen#
Patchunterstützt nun vollständig die Verwendung von RGBA-Werten für seine Attributefacecolorundedgecolor, was es ermöglicht, dass Flächen und Kanten unterschiedliche Alpha-Werte haben. Wenn das AttributalphadesPatch-Objekts auf etwas anderes alsNonegesetzt ist, überschreibt dieser Wert jeden Alpha-Kanalwert sowohl in den Flächen- als auch in den Kantenfarben. Zuvor, wennPatchalpha=Nonehatte, wurde die Alpha-Komponente vonedgecolorsowohl auf die Kante als auch auf die Fläche angewendet.Das optionale Argument
isRGBfürset_foreground()(und die anderen GraphicsContext-Klassen, die davon erben) wurde inisRGBAumbenannt und sollte nun nur noch aufTruegesetzt werden, wenn dasfg-Farbar-gument bekanntermaßen ein RGBA-Tupel ist.Für
Patchist der verwendetecapstylenunbutt, um mit dem Standardwert für die meisten anderen Objekte übereinzustimmen und Probleme mit nicht-solidenlinestylezu vermeiden, die bei Verwendung einer großenlinewidthals solide erscheinen. Zuvor verwendetePatchcapstyle='projecting'.Path-Objekte können nun als schreibgeschützt markiert werden, indemreadonly=Truean den Konstruktor übergeben wird. Die integrierten Pfad-Singletons, die über die KlassenmethodenPath.unit*erhalten werden, geben schreibgeschützte Pfade zurück. Wenn Ihr Code diese modifiziert hat, müssen Sie zuerst eine tiefe Kopie erstellen, entweder mitimport copy path = copy.deepcopy(Path.unit_circle()) # or path = Path.unit_circle().deepcopy()
Das tiefe Kopieren eines
Patherstellt immer einen bearbeitbaren (d.h. nicht schreibgeschützten)Path.Die Liste bei
Path.NUM_VERTICESwurde durch ein Wörterbuch ersetzt, das Pfadcodes auf die Anzahl der erwarteten Vertices unterNUM_VERTICES_FOR_CODEabbildet.Zur Unterstützung von XKCD-Stil-Plots wurde die Signatur der Methode
matplotlib.path.cleanup_pathaktualisiert, sodass sie ein Sketch-Argument erfordert. Benutzer vonmatplotlib.path.cleanup_pathwerden ermutigt, die neue Pfadmethodecleaned()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.axvlineundaxes.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
FancyArrowwurde die Standard-Pfeilspitzenbreitehead_widthvergrößert, um eine sichtbare Pfeilspitze zu erzeugen. Der neue Wert dieses kwargs isthead_width = 20 * width.Es ist nun möglich,
Anzahl der Level + 1Farben im Fall vonextend='both'für contourf (oder nurAnzahl der LevelFarben für einen Extend-Wertminodermax) bereitzustellen, so dassset_underundset_overder 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, woextend='both'Anzahl der Level + 2Farben erwarten würde.Ein neues Schlüsselwort extendrect in
colorbar()undColorbarBaseermöglicht die Steuerung der Form von Colorbar-Erweiterungen.Die Erweiterung von
MultiCursorauf sowohl vertikale (Standard) als auch/oder horizontale Cursor implizierte, dassself.linedurchself.vlinefür vertikale Cursorlinien ersetzt wurde undself.hlinefür die horizontalen Cursorlinien hinzugefügt wurde.Auf POSIX-Plattformen löst die Funktion
matplotlib.cbook.report_memoryNotImplementedErroranstelle vonOSErroraus, wenn der Befehl ps nicht ausgeführt werden kann.Die Funktion
matplotlib.cbook.check_outputwurde nachmatplotlib.compat.subprocessverschoben.
Konfiguration und rcParams#
Unter Linux befindet sich die benutzerspezifische Konfigurationsdatei
matplotlibrcnun 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()inmatplotlib.pyplot.plotfilewurde entfernt. Um das Raster der Achsen zu zeichnen, setzen Sie den rcParamaxes.gridauf True oder rufen Siegrid()explizit auf.