API-Änderungen in 2.2.0#
Neue Abhängigkeit#
kiwisolver ist nun eine erforderliche Abhängigkeit zur Unterstützung des neuen constrained_layout, siehe Constrained layout guide für weitere Details.
Deprecations#
Klassen, Funktionen und Methoden#
Die ungenutzten und ungetesteten Methoden Artist.onRemove und Artist.hitlist wurden als veraltet markiert.
Die nun ungenutzte Funktion mlab.less_simple_linear_interpolation wurde als veraltet markiert.
Die ungenutzte Methode ContourLabeler.get_real_label_width wurde als veraltet markiert.
Die ungenutzte Methode FigureManagerBase.show_popup wurde als veraltet markiert. Dies wurde in e945059b327d42a99938b939a1be867fa023e7ba im Jahr 2005 eingeführt, aber nie in einem der Backends implementiert.
backend_tkagg.AxisMenu wurde als veraltet markiert, da es seit der Entfernung von "klassischen" Symbolleisten nicht mehr verwendet wird.
Geänderte Funktionssignaturen#
Der kwarg fig für GridSpec.get_subplot_params wurde als veraltet markiert, verwenden Sie stattdessen figure.
Die Verwendung von pyplot.axes mit einem Axes-Objekt als Argument ist veraltet. Dies setzt die aktuellen Achsen, d.h. es hat die gleiche Wirkung wie pyplot.sca. Zur besseren Übersichtlichkeit sollte plt.sca(ax) gegenüber plt.axes(ax) bevorzugt werden.
Die Verwendung von Strings anstelle von Booleans zur Steuerung der Sichtbarkeit von Gitternetzlinien und Achsenstrichen ist veraltet. Die Verwendung von "on", "off", "true" oder "false" zur Steuerung der Sichtbarkeit von Gitternetzlinien und Achsenstrichen wurde als veraltet markiert. Verwenden Sie stattdessen normale Booleans (True/False) oder boolesche Äquivalente. In Zukunft könnten alle nicht-leeren Strings als True interpretiert werden.
Wenn 2D-Eingaben mit nicht übereinstimmender Spaltenanzahl übergeben werden, durchläuft plot derzeit die Spalten der schmaleren Eingabe, bis alle Spalten der breiteren Eingabe gezeichnet wurden. Dieses Verhalten ist veraltet; in Zukunft wird nur noch Broadcasting (1 Spalte auf *n* Spalten) durchgeführt.
rcparams#
Die rcParams backend.qt4 und backend.qt5 wurden in Version 2.2 als veraltet markiert. Um die Verwendung eines bestimmten Qt-Bindings zu erzwingen, importieren Sie dieses Binding entweder zuerst oder setzen Sie die Umgebungsvariable QT_API.
Veraltung des nbagg.transparent rcParam. Um die Transparenz von Figure-Patches im nbagg- (oder einem anderen) Backend zu steuern, setzen Sie direkt figure.patch.facecolor oder den figure.facecolor rcParam.
Veraltung von Axis.unit_data#
Verwenden Sie stattdessen Axis.units (das schon lange existiert).
Entfernungen#
Funktionssignaturen#
Konturierung unterstützt nicht mehr das legacy-Eckmaskierungsverfahren. Die als veraltet markierten Eigenschaften ContourSet.vmin und ContourSet.vmax wurden entfernt.
Die Übergabe von None anstelle von "none" als Format für errorbar wird nicht mehr unterstützt.
Das Keyword-Argument bgcolor für Axes wurde entfernt.
Module, Methoden und Funktionen#
Die Module matplotlib.finance, mpl_toolkits.exceltools und mpl_toolkits.gtktools wurden entfernt. matplotlib.finance ist weiterhin unter matplotlib/mpl_finance verfügbar.
Die Funktion mpl_toolkits.mplot3d.art3d.iscolor wurde entfernt.
Die Methoden Axes.get_axis_bgcolor, Axes.set_axis_bgcolor, Bbox.update_from_data, Bbox.update_datalim_numerix, MaxNLocator.bin_boundaries wurden entfernt.
mencoder kann nicht mehr zum Kodieren von Animationen verwendet werden.
Die ungenutzten Attribute FONT_SCALE und fontd der Klasse RendererSVG wurden entfernt.
Colormaps#
Die Colormap spectral wurde entfernt. Die Vega* Colormaps, die Aliase für die tab* Colormaps waren, wurden entfernt.
rcparams#
Die folgenden als veraltet markierten rcParams wurden entfernt:
axes.color_cycle(sieheaxes.prop_cycle),legend.isaxes,svg.embed_char_paths(siehesvg.fonttype),text.fontstyle,text.fontangle,text.fontvariant,text.fontweight,text.fontsize(umbenannt intext.style, etc.),tick.size(umbenannt intick.major.size).
Nur string-ähnliche Eingaben für kategoriale Daten akzeptieren#
Gemischte String-/Float-/Int-Eingaben werden nicht mehr akzeptiert, nur Strings sind gültige Kategorien.
Entfernung von ungenutzten Importen#
Viele ungenutzte Importe wurden aus der Codebasis entfernt. Infolgedessen wird beim Versuch, bestimmte Klassen oder Funktionen aus dem "falschen" Modul zu importieren (z.B. Figure aus matplotlib.backends.backend_agg anstelle von matplotlib.figure), nun ein ImportError ausgelöst.
Axes3D.get_xlim, get_ylim und get_zlim geben nun ein Tupel zurück#
Zuvor gaben sie ein Array zurück. Die Rückgabe eines Tupels ist konsistent mit dem Verhalten für 2D-Achsen.
Änderungen des Exception-Typs#
Wenn MovieWriterRegistry den angeforderten MovieWriter nicht finden kann, wird nun eine hilfreichere RuntimeError-Nachricht anstelle des zuvor ausgelösten KeyError ausgegeben.
matplotlib.tight_layout.auto_adjust_subplotpars löst nun ValueError anstelle von RuntimeError aus, wenn die Größen von Eingabelisten nicht übereinstimmen.
Figure.set_figwidth und Figure.set_figheight setzen standardmäßig *forward* auf True#
matplotlib.figure.Figure.set_figwidth und matplotlib.figure.Figure.set_figheight hatten standardmäßig das Keyword-Argument forward=False, aber figure.Figure.set_size_inches setzt nun standardmäßig auf forward=True. Dies macht diese Funktionen konsistent.
SVG-Größen werden nicht mehr auf den nächsten Punkt gerundet#
Es gibt keinen Grund, die SVG-Ausgabe in ganzen Punkten zu dimensionieren; die Attribute *height*, *width* und *viewBox* des *svg*-Elements werden nun als Gleitkommazahlen ausgegeben.
Schriftgrößen kleiner als 1 pt werden auf 1 pt beschnitten.#
FreeType erlaubt keine Schriftgrößen kleiner als 1 pt, daher rundeten alle Agg-Backends stillschweigend auf 1 pt auf. PDF (und andere Vektor-Backends?) erlaubten uns, Schriftarten mit weniger als 1 pt zu schreiben, aber sie konnten nicht richtig platziert werden, da Positionsinformationen von FreeType stammen. Diese Änderung stellt sicher, dass kein Backend Schriftgrößen kleiner als 1 pt verwenden kann, was mit FreeType konsistent ist und konsistentere Ergebnisse über verschiedene Backends hinweg gewährleistet.
Änderungen an der Klassen-MRO des Qt-Backends#
Um sowohl Agg- als auch Cairo-Rendering für Qt-Backends zu unterstützen, wurden alle nicht-Agg-spezifischen Codes, die sich zuvor in backend_qt5agg.FigureCanvasQTAggBase befanden, nach backend_qt5.FigureCanvasQT verschoben, damit sie mit der Cairo-Implementierung geteilt werden können. Die Methoden FigureCanvasQTAggBase.paintEvent, FigureCanvasQTAggBase.blit und FigureCanvasQTAggBase.print_figure wurden nach FigureCanvasQTAgg.paintEvent, FigureCanvasQTAgg.blit und FigureCanvasQTAgg.print_figure verschoben. Die beiden ersten Methoden gehen davon aus, dass die Instanz auch ein QWidget ist, sodass zur Verwendung von FigureCanvasQTAggBase eine Mehrfachvererbung von einer QWidget-Unterklasse erforderlich war.
Nachdem alle seine Methoden entweder in der Klassenhierarchie nach oben oder unten verschoben wurden, wurde FigureCanvasQTAggBase als veraltet markiert. Um dies ohne Warnung zu tun und so viel API wie möglich zu erhalten, erbt .backend_qt5agg.FigureCanvasQTAggBase nun von backend_qt5.FigureCanvasQTAgg.
Die MRO für FigureCanvasQTAgg und FigureCanvasQTAggBase war bisher
[matplotlib.backends.backend_qt5agg.FigureCanvasQTAgg,
matplotlib.backends.backend_qt5agg.FigureCanvasQTAggBase,
matplotlib.backends.backend_agg.FigureCanvasAgg,
matplotlib.backends.backend_qt5.FigureCanvasQT,
PyQt5.QtWidgets.QWidget,
PyQt5.QtCore.QObject,
sip.wrapper,
PyQt5.QtGui.QPaintDevice,
sip.simplewrapper,
matplotlib.backend_bases.FigureCanvasBase,
object]
und
[matplotlib.backends.backend_qt5agg.FigureCanvasQTAggBase,
matplotlib.backends.backend_agg.FigureCanvasAgg,
matplotlib.backend_bases.FigureCanvasBase,
object]
jeweils. Sie sind nun
[matplotlib.backends.backend_qt5agg.FigureCanvasQTAgg,
matplotlib.backends.backend_agg.FigureCanvasAgg,
matplotlib.backends.backend_qt5.FigureCanvasQT,
PyQt5.QtWidgets.QWidget,
PyQt5.QtCore.QObject,
sip.wrapper,
PyQt5.QtGui.QPaintDevice,
sip.simplewrapper,
matplotlib.backend_bases.FigureCanvasBase,
object]
und
[matplotlib.backends.backend_qt5agg.FigureCanvasQTAggBase,
matplotlib.backends.backend_qt5agg.FigureCanvasQTAgg,
matplotlib.backends.backend_agg.FigureCanvasAgg,
matplotlib.backends.backend_qt5.FigureCanvasQT,
PyQt5.QtWidgets.QWidget,
PyQt5.QtCore.QObject,
sip.wrapper,
PyQt5.QtGui.QPaintDevice,
sip.simplewrapper,
matplotlib.backend_bases.FigureCanvasBase,
object]
axes.Axes.imshow schneidet RGB-Werte auf den gültigen Bereich zu#
Wenn axes.Axes.imshow einen RGB- oder RGBA-Wert mit Werten außerhalb des gültigen Bereichs übergeben bekommt, protokolliert es nun eine Warnung und schneidet diese auf den gültigen Bereich zu. Das alte Verhalten, das die Werte wieder in den Bereich wrappt, hat Ausreißer oft verborgen und die Interpretation von RGB-Bildern unzuverlässig gemacht.
GTKAgg und GTKCairo Backends als veraltet markiert#
Die GTKAgg und GTKCairo Backends wurden als veraltet markiert. Diese obsoleten Backends ermöglichen das Rendern von Figuren über das GTK+ 2 Toolkit. Sie sind ungetestet, bekanntlich fehlerhaft, funktionieren nicht mit Python 3 und ihre Verwendung wird seit einiger Zeit nicht mehr empfohlen. Verwenden Sie stattdessen die Backends GTK3Agg und GTK3Cairo für das Rendern auf GTK+ 3 Fenster.