API-Änderungen für 3.7.0#
Verhaltensänderungen#
Alle Achsen haben jetzt die Methoden get_subplotspec und get_gridspec, die None für Achsen zurückgeben, die nicht über ein GridSpec positioniert sind#
Zuvor war diese Methode nur für Achsen vorhanden, die über ein GridSpec positioniert wurden. Nach dieser Änderung sollte das Prüfen von hasattr(ax, "get_gridspec") nun durch ax.get_gridspec() is not None ersetzt werden. Zur Kompatibilität mit älteren Matplotlib-Versionen kann auch hasattr(ax, "get_gridspec") and ax.get_gridspec() is not None geprüft werden.
HostAxesBase.get_aux_axes verwendet jetzt standardmäßig dieselbe Basis-Achsenklasse wie die Host-Achsen#
Wenn eine mpl_toolkits.axisartist-basierte Host-Achse verwendet wird, basiert die Parasitenachse ebenfalls auf mpl_toolkits.axisartist. Dieses Verhalten ist konsistent mit HostAxesBase.twin, HostAxesBase.twinx und HostAxesBase.twiny.
plt.get_cmap und matplotlib.cm.get_cmap geben eine Kopie zurück#
Zuvor gaben get_cmap und matplotlib.cm.get_cmap eine globale Version eines Colormap zurück. Dies war fehleranfällig, da die Modifikation der Colormap ohne Vorwarnung von einem Ort zum anderen propagierte. Jetzt wird eine neue Kopie der Colormap zurückgegeben.
TrapezoidMapTriFinder verwendet einen anderen Zufallszahlengenerator#
Der Zufallszahlengenerator, der zur Bestimmung der Einfügungsreihenfolge von Dreieckskanten in TrapezoidMapTriFinder verwendet wird, hat sich geändert. Dies kann dazu führen, dass für einen Punkt, der genau auf einer Kante zwischen zwei Dreiecken liegt, ein anderer Dreiecksindex zurückgegeben wird. Dies kann auch Interpolations- und Verfeinerungsalgorithmen für Triangulationen beeinträchtigen, die TrapezoidMapTriFinder verwenden.
FuncAnimation(save_count=None)#
Das Übergeben von save_count=None an FuncAnimation beschränkt die Anzahl der Frames nicht mehr auf 100. Stellen Sie sicher, dass diese entweder aus frames abgeleitet werden kann oder geben Sie eine Ganzzahl save_count an.
CenteredNorm Halbbereich wird nicht geändert, wenn vcenter sich ändert#
Zuvor erweiterte sich der Halbbereich proportional zu dem Betrag, um den vcenter von entweder vmin oder vmax weg bewegt wurde. Jetzt bleibt der Halbbereich bei Änderung von vcenter fest, und vmin und vmax werden basierend auf den Werten von vcenter und halfrange aktualisiert.
Beispielsweise sahen die Werte so aus, als vcenter zuvor geändert wurde.
norm = CenteredNorm(vcenter=0, halfrange=1)
# Move vcenter up by one
norm.vcenter = 1
# updates halfrange and vmax (vmin stays the same)
# norm.halfrange == 2, vmin == -1, vmax == 3
und jetzt, mit demselben Beispiel
norm = CenteredNorm(vcenter=0, halfrange=1)
norm.vcenter = 1
# updates vmin and vmax (halfrange stays the same)
# norm.halfrange == 1, vmin == 0, vmax == 2
Der Halbbereich kann manuell eingestellt werden oder norm.autoscale() kann verwendet werden, um die Grenzen automatisch nach dem Einstellen von vcenter zu setzen.
fig.subplot_mosaic übergibt die gridspec_kw Argumente nicht mehr an verschachtelte GridSpecs.#
Für verschachtelte Figure.subplot_mosaic Layouts ist es fast immer ungeeignet, dass gridspec_kw Argumente an niedrigere Verschachtelungsebenen weitergegeben werden, und diese Argumente sind in vielen Fällen mit den niedrigeren Ebenen inkompatibel. Dieses Wörterbuch wird nicht mehr an die inneren Layouts übergeben. Benutzer, die gridspec_kw auf mehreren Ebenen ändern müssen, sollten Figure.subfigures verwenden, um Verschachtelung zu erhalten, und die inneren Layouts mit Figure.subplots oder Figure.subplot_mosaic konstruieren.
HPacker Ausrichtung mit bottom oder top ist jetzt korrekt#
Zuvor waren die Ausrichtungen bottom und top vertauscht. Dies wurde korrigiert, so dass die Ausrichtungen entsprechend übereinstimmen.
Nur auf Windows werden Schriftarten erkannt, die in der Registrierung bekannt sind#
Zuvor durchsuchte Matplotlib rekursiv Benutzer- und System-Schriftartverzeichnisse, um Schriftarten zu finden, dies führte jedoch zu einer Reihe unerwünschter Verhaltensweisen, einschließlich des Findens gelöschter Schriftarten. Jetzt findet Matplotlib nur Schriftarten, die in der Windows-Registrierung bekannt sind.
Das bedeutet, dass jede vom Benutzer installierte Schriftart über den Windows-Schriftarten-Installer installiert werden muss, anstatt einfach in den richtigen Ordner kopiert zu werden.
Dies wirkt sich nur auf den Satz von Schriftarten aus, die Matplotlib bei der Verwendung von matplotlib.font_manager.findfont berücksichtigt. Um eine beliebige Schriftart zu verwenden, übergeben Sie direkt den Pfad zu einer Schriftart, wie in Verwendung von TTF-Schriftdateien gezeigt.
QuadMesh.set_array löst jetzt immer ValueError für Eingaben mit falschen Formen aus#
Zuvor konnte es in einigen Fällen auch TypeError auslösen.
contour und contourf wählen automatisch geeignete Ebenen aus, wenn boolesche Eingaben gegeben werden#
Wenn das an Axes.contour oder Axes.contourf übergebene Höhenarray vom booleschen Datentyp ist und levels nicht angegeben ist, ist levels jetzt standardmäßig [0.5] für contour und [0, 0.5, 1] für Axes.contourf.
contour warnt nicht mehr, wenn keine Konturlinien gezeichnet werden.#
Dies kann passieren, wenn der Benutzer explizit ein levels-Array mit keinen Werten zwischen z.min() und z.max() übergibt; oder wenn z überall denselben Wert hat.
AxesImage.set_extent löst jetzt TypeError für unbekannte Schlüsselwortargumente aus#
Zuvor wurde ein ValueError ausgelöst.
Änderung des Verhaltens von legend(loc="best")#
Der Algorithmus des automatischen Legendenlokalisierers wurde angepasst, um nicht rechteckige Patches besser zu handhaben. Weitere Details zu dieser Änderung finden Sie unter #9580 und #9598.
Veraltete Funktionen#
Axes Unterklassen sollten clear statt cla überschreiben#
Zur Klarheit wird axes.Axes.clear nun gegenüber Axes.cla bevorzugt. Aus Gründen der Abwärtskompatibilität bleibt letzteres jedoch ein Alias für ersteres.
Für zusätzliche Kompatibilität mit Drittanbieterbibliotheken ruft Matplotlib weiterhin die cla-Methode von Axes-Unterklassen auf, wenn diese definiert ist. In Zukunft wird dies nicht mehr der Fall sein, und Matplotlib wird nur die clear-Methode in Axes-Unterklassen aufrufen.
Es wird empfohlen, nur die clear-Methode zu definieren, wenn Sie Matplotlib 3.6 verwenden, und nur cla für ältere Versionen.
rcParams-Typ#
Das Verlassen darauf, dass rcParams eine dict-Unterklasse ist, wird als veraltet markiert.
Für normale Benutzer wird sich nichts ändern, da rcParams weiterhin dict-ähnlich sein wird (technisch gesehen die MutableMapping-Schnittstelle erfüllt).
Die Klasse RcParams führt Validierungsprüfungen bei Aufrufen von .RcParams.__getitem__ und .RcParams.__setitem__ durch. Es gibt jedoch seltene Fälle, in denen wir die Validierungslogik umgehen und direkt auf die zugrunde liegenden Datenwerte zugreifen möchten. Zuvor konnte dies durch einen Aufruf der übergeordneten Methoden dict.__getitem__(rcParams, key) und dict.__setitem__(rcParams, key, val) erreicht werden.
Matplotlib 3.7 führt rcParams._set(key, val) und rcParams._get(key) als Ersatz für den Aufruf der übergeordneten Methoden ein. Sie sind absichtlich als privat gekennzeichnet, um die externe Nutzung zu entmutigen. Wenn jedoch direkter Zugriff auf die RcParams-Daten benötigt wird, wechseln Sie bitte von den Dict-Funktionen zu den neuen _get() und _set(). Auch wenn sie als privat gekennzeichnet sind, garantieren wir die API-Stabilität für diese Methoden, und sie unterliegen der API- und Deprecationsrichtlinie von Matplotlib.
Bitte benachrichtigen Sie die Matplotlib-Entwickler, wenn Sie sich auf eine andere Weise auf rcParams als dict-Unterklasse verlassen, für die es noch keinen Migrationspfad gibt.
Deprecations-Aliase in cbook#
Das Modul matplotlib.cbook.deprecation wurde zuvor in Matplotlib 3.4 als veraltet markiert, zusammen mit deprecationsbezogenen APIs in matplotlib.cbook. Aufgrund technischer Probleme lösten matplotlib.cbook.MatplotlibDeprecationWarning und matplotlib.cbook.mplDeprecation keine Deprecationswarnungen bei Verwendung aus. Änderungen in Python haben es nun möglich gemacht, zu warnen, wenn diese Aliase verwendet werden.
Um nachgelagerte Fehler zu vermeiden, warnen diese Aliase nun, und ihre Entfernung wurde von 3.6 auf 3.8 verschoben, um Zeit für die Beachtung dieser Warnungen zu geben. Als Ersatz verwenden Sie bitte matplotlib.MatplotlibDeprecationWarning.
draw_gouraud_triangle#
... ist veraltet, da dies in den meisten Backends ein redundanter Aufruf ist. Verwenden Sie stattdessen draw_gouraud_triangles. Ein draw_gouraud_triangle-Aufruf in einem benutzerdefinierten Artist kann leicht ersetzt werden als
self.draw_gouraud_triangles(gc, points.reshape((1, 3, 2)),
colors.reshape((1, 3, 4)), trans)
Eine draw_gouraud_triangles-Methode kann aus einer vorhandenen draw_gouraud_triangle-Methode implementiert werden als
transform = transform.frozen()
for tri, col in zip(triangles_array, colors_array):
self.draw_gouraud_triangle(gc, tri, col, transform)
matplotlib.pyplot.get_plot_commands#
... ist eine bevorstehende Veraltung. Dies gilt als intern und kein Endbenutzer sollte es benötigen.
matplotlib.tri Untermodule sind veraltet#
Die matplotlib.tri.* Untermodule sind veraltet. Die gesamte Funktionalität ist direkt in matplotlib.tri verfügbar und sollte von dort importiert werden.
Das Übergeben eines undefinierten label_mode an Grid#
... ist veraltet. Dies schließt mpl_toolkits.axes_grid1.axes_grid.Grid, mpl_toolkits.axes_grid1.axes_grid.AxesGrid und mpl_toolkits.axes_grid1.axes_grid.ImageGrid sowie die entsprechenden Klassen, die aus mpl_toolkits.axisartist.axes_grid importiert werden, ein.
Übergeben Sie stattdessen label_mode='keep', um das vorherige Verhalten zu erhalten, Labels nicht zu ändern.
Farbleisten für verwaiste Mappables sind veraltet, lösen aber nicht mehr aus#
Vor 3.6.0 beanspruchten Farbleisten für Mappables ohne übergeordnete Achsen Platz von der aktuellen Achse. 3.6.0 löste hierfür einen Fehler aus, aber ohne einen Deprecation-Zyklus. Für 3.6.1 wird dies rückgängig gemacht, die aktuelle Achse wird verwendet, aber stattdessen wird eine Deprecationswarnung ausgegeben. In diesem unbestimmten Fall sollten Benutzer und Bibliotheken explizit angeben, von welcher Achse Platz beansprucht werden soll: fig.colorbar(mappable, ax=plt.gca()).
Animation Attribute#
Die Attribute repeat von TimedAnimation und Unterklassen sowie save_count von FuncAnimation gelten als privat und sind veraltet.
contour.ClabelText und ContourLabeler.set_label_props#
... sind veraltet.
Verwenden Sie Text(..., transform_rotates_text=True) als Ersatz für contour.ClabelText(...) und text.set(text=text, color=color, fontproperties=labeler.labelFontProps, clip_box=labeler.axes.bbox) als Ersatz für ContourLabeler.set_label_props(label, text, color).
ContourLabeler Attribute#
Die Attribute labelFontProps, labelFontSizeList und labelTextsList von ContourLabeler sind veraltet. Verwenden Sie stattdessen das Attribut labelTexts und die Schrifteigenschaften der entsprechenden Textobjekte.
backend_ps.PsBackendHelper und backend_ps.ps_backend_helper#
... sind veraltet und haben keine Ersatzfunktion.
backend_webagg.ServerThread ist veraltet#
... ohne Ersatz.
parse_fontconfig_pattern wird unbekannte Konstantenamen nicht mehr ignorieren#
Zuvor wurde in einem Fontconfig-Muster wie DejaVu Sans:foo der unbekannte Konstantenname foo stillschweigend ignoriert. Dies löst nun eine Warnung aus und wird zukünftig zu einem Fehler.
BufferRegion.to_string und BufferRegion.to_string_argb#
... sind veraltet. Verwenden Sie np.asarray(buffer_region), um eine Array-Ansicht einer Buffer-Region ohne Kopie zu erhalten; um diese Ansicht von RGBA (Standard) nach ARGB zu konvertieren, verwenden Sie np.take(..., [2, 1, 0, 3], axis=2).
num2julian, julian2num und JULIAN_OFFSET#
... des Moduls dates sind ohne Ersatz veraltet. Diese sind undokumentiert und nicht exportiert. Wenn Sie sich darauf verlassen, erstellen Sie bitte eine lokale Kopie.
unit_cube, tunit_cube und tunit_edges#
... von Axes3D sind ohne Ersatz veraltet. Wenn Sie sich darauf verlassen, kopieren Sie bitte den Code der entsprechenden privaten Funktion (Name beginnt mit _).
Die meisten Argumente für Widgets wurden zu Schlüsselwort-Argumenten gemacht#
Das positionsgebundene Übergeben aller außer den allerersten Argumenten in den Konstruktoren von Widgets wird als veraltet markiert. Die meisten Argumente werden in einer zukünftigen Version nur noch als Schlüsselwort-Argumente zulässig sein.
SimpleEvent#
Die verschachtelte Klasse SimpleEvent (früher zugänglich über die öffentlichen Unterklassen von ConnectionStyle._Base, wie z. B. ConnectionStyle.Arc, ist veraltet.
OffsetBox.get_extent_offsets und OffsetBox.get_extent#
... sind veraltet; diese Methoden sind auch für alle Unterklassen von OffsetBox veraltet.
Um die Extents des Offset-Boxen zu erhalten, verwenden Sie anstelle von get_extent OffsetBox.get_bbox, was direkt eine Bbox-Instanz zurückgibt.
Um auch die Kind-Offsets zu erhalten, rufen Sie anstelle von get_extent_offsets separat get_offset für jedes Kind auf, nachdem eine Zeichnung ausgelöst wurde.
legend.legendHandles#
... war undokumentiert und wurde in legend_handles umbenannt. Die Verwendung von legendHandles ist veraltet.
Der Parameter ticklabels von Axis.set_ticklabels wurde in labels umbenannt#
offsetbox.bbox_artist#
... ist veraltet. Dies ist nur ein Wrapper, um patches.bbox_artist aufzurufen, wenn ein Flag in der Datei gesetzt ist. Verwenden Sie dies also direkt, wenn Sie das Verhalten benötigen.
Quiver.quiver_doc und Barbs.barbs_doc#
... sind veraltet. Dies sind die Doc-Strings und sollten nicht als benanntes Klassenmitglied zugänglich sein.
Veraltung des ungenutzten Parameters x für TextBox.begin_typing#
Dieser Parameter wurde in der Methode nicht verwendet, war aber ein erforderliches Argument.
Veraltung von Top-Level-Registrierungs- und Zugriffsfunktionen für cmaps in mpl.cm#
Als Teil eines mehrstufigen Prozesses refaktorisieren wir den globalen Zustand für die Verwaltung der registrierten Colormaps.
In Matplotlib 3.5 haben wir eine Klasse ColormapRegistry hinzugefügt und eine Instanz auf Top-Level als matplotlib.colormaps verfügbar gemacht. Die vorhandenen Top-Level-Funktionen in matplotlib.cm (get_cmap, register_cmap, unregister_cmap) wurden geändert, um Aliase für dieselbe Instanz zu sein. In Matplotlib 3.6 haben wir diese Top-Level-Funktionen als "pending deprecation" markiert.
In Matplotlib 3.7 sind die folgenden Funktionen als veraltet markiert worden
matplotlib.cm.get_cmap; verwenden Sie stattdessenmatplotlib.colormaps[name], wenn Sie einenstrhaben.Hinzugefügt 3.6.1 Verwenden Sie
matplotlib.cm.ColormapRegistry.get_cmap, wenn Sie einen String,Noneoder einmatplotlib.colors.Colormap-Objekt haben, das Sie in einematplotlib.colors.Colormap-Instanz konvertieren möchten.matplotlib.cm.register_cmap; verwenden Sie stattdessenmatplotlib.colormaps.registermatplotlib.cm.unregister_cmap; verwenden Sie stattdessenmatplotlib.colormaps.unregistermatplotlib.pyplot.register_cmap; verwenden Sie stattdessenmatplotlib.colormaps.register
Die Funktion matplotlib.pyplot.get_cmap bleibt aus Kompatibilitätsgründen erhalten.
BrokenBarHCollection ist veraltet#
Es war nur ein dünner Wrapper, der von PolyCollection erbte; broken_barh wurde nun geändert, um stattdessen ein PolyCollection zurückzugeben.
Der Helfer BrokenBarHCollection.span_where ist ebenfalls veraltet; für die Dauer der Veralterung wurde er in die übergeordnete Klasse PolyCollection verschoben. Verwenden Sie fill_between als Ersatz; siehe Bereiche basierend auf einer logischen Maske mit fill_between schattieren als Beispiel.
Inkonsistente Übergabe von loc und nth_coord an axisartist-Helfer#
Der Versuch, zum Beispiel eine "obere y-Achse" oder eine "linke x-Achse" zu konstruieren, ist nun veraltet.
passthru_pt#
Dieses Attribut von AxisArtistHelpers ist veraltet.
axes3d.vvec, axes3d.eye, axes3d.sx und axes3d.sy#
... sind ohne Ersatz veraltet.
Line2D#
Beim Erstellen einer Line2D oder bei der Verwendung von Line2D.set_xdata und Line2D.set_ydata ist die Übergabe von x/y-Daten als Nicht-Sequenz veraltet.
Entfernungen#
epoch2num und num2epoch wurden entfernt#
Diese Methoden konvertieren von Unix-Timestamps zu Matplotlib-Floats, werden aber intern von Matplotlib nicht verwendet und sollten von Endbenutzern nicht benötigt werden. Um einen Unix-Timestamp in ein Datum/eine Zeit zu konvertieren, verwenden Sie einfach datetime.datetime.fromtimestamp, oder verwenden Sie NumPy datetime64 dt = np.datetime64(e*1e6, 'us').
Locator und Formatter Wrapper-Methoden#
Die Methoden set_view_interval, set_data_interval und set_bounds von Locatorn und Formattern (und ihrer gemeinsamen Basisklasse TickHelper) wurden entfernt. Manipulieren Sie stattdessen direkt die Ansichts- und Datenintervalle auf der zugrunde liegenden Achse.
Details zum interaktiven Cursor#
Das Setzen eines Mauscursors auf einem Fenster wurde von der Symbolleiste auf die Leinwand verschoben. Folglich wurden mehrere Implementierungsdetails auf Symbolleisten und innerhalb von Backends entfernt.
backend_tools.SetCursorBase und Unterklassen#
backend_tools.SetCursorBase wurde unterklasset, um Backend-spezifische Implementierungen von set_cursor bereitzustellen. Da dies nun entfernt wurde, ist die Unterklassifizierung nicht mehr notwendig. Folglich sind auch die folgenden Unterklassen entfernt:
matplotlib.backends.backend_gtk3.SetCursorGTK3matplotlib.backends.backend_qt5.SetCursorQtmatplotlib.backends._backend_tk.SetCursorTkmatplotlib.backends.backend_wx.SetCursorWx
Verwenden Sie stattdessen die Klasse backend_tools.ToolSetCursor.
cursord in GTK und wx Backends#
Die Wörterbücher backend_gtk3.cursord und backend_wx.cursord wurden entfernt. Dies macht das GTK-Modul in Headless-Umgebungen importierbar.
auto_add_to_figure=True für Axes3D#
... wird nicht mehr unterstützt. Verwenden Sie stattdessen fig.add_axes(ax).
Der erste Parameter von Axes.grid und Axis.grid wurde in visible umbenannt#
Der Parameter hieß zuvor b. Diese Namensänderung ist nur relevant, wenn dieser Parameter als Schlüsselwortargument übergeben wurde, z. B. grid(b=False).
Entfernung von veralteten Elementen in der Selector-Widget-API#
RectangleSelector und EllipseSelector#
Das Schlüsselwortargument drawtype für RectangleSelector wurde entfernt. Von nun an wird nur noch das Verhalten drawtype='box' unterstützt.
Die Unterstützung für drawtype=line wurde vollständig entfernt. Als Ergebnis wurde auch das Schlüsselwortargument lineprops für RectangleSelector entfernt.
Um das Verhalten von drawtype='none' beizubehalten, verwenden Sie rectprops={'visible': False}, um das gezeichnete Rectangle unsichtbar zu machen.
Bereinigte Attribute und Argumente sind
Das Attribut
active_handlewurde privatisiert und entfernt.Das Attribut
drawtypewurde privatisiert und entfernt.Das Attribut
eventpresswurde privatisiert und entfernt.Das Attribut
eventreleasewurde privatisiert und entfernt.Das Attribut
interactivewurde privatisiert und entfernt.Das Argument marker_props wurde entfernt, verwenden Sie stattdessen handle_props.
Das Argument maxdist wurde entfernt, verwenden Sie stattdessen grab_range.
Das Argument rectprops wurde entfernt, verwenden Sie stattdessen props.
Das Attribut
rectpropswurde privatisiert und entfernt.Das Attribut
statewurde privatisiert und entfernt.Das Attribut
to_drawwurde privatisiert und entfernt.
PolygonSelector#
Das Attribut line wurde entfernt. Wenn Sie die Eigenschaften des Selektor-Künstler ändern möchten, verwenden Sie die Methoden
set_propsoderset_handle_props.Das Argument lineprops wurde entfernt, verwenden Sie stattdessen props.
Das Argument markerprops wurde entfernt, verwenden Sie stattdessen handle_props.
Das Argument und Attribut maxdist wurden entfernt, verwenden Sie stattdessen grab_range.
Das Argument und Attribut vertex_select_radius wurden entfernt, verwenden Sie stattdessen grab_range.
SpanSelector#
Das Attribut
active_handlewurde privatisiert und entfernt.Das Attribut
eventpresswurde privatisiert und entfernt.Das Attribut
eventreleasewurde privatisiert und entfernt.Das Attribut
pressvwurde privatisiert und entfernt.Das Attribut
prevwurde privatisiert und entfernt.Das Attribut
rectwurde privatisiert und entfernt.Der Parameter rectprops wurde in props umbenannt.
Das Attribut
rectpropswurde privatisiert und entfernt.Der Parameter span_stays wurde in interactive umbenannt.
Das Attribut
span_stayswurde privatisiert und entfernt.Das Attribut
statewurde privatisiert und entfernt.
LassoSelector#
Das Argument lineprops wurde entfernt, verwenden Sie stattdessen props.
Die Methoden
onpressundonreleasewurden entfernt. Sie waren direkte Aliase fürpressundrelease.Das Attribut
matplotlib.widgets.TextBox.DIST_FROM_LEFTwurde entfernt. Es wurde in Version 3.5 als privat markiert.
backend_template.show#
... wurde entfernt, um die neue Backend-Definition-API besser zu demonstrieren.
Nicht verwendete positionelle Parameter für print_<fmt> Methoden#
Keine der von Canvas-Unterklassen implementierten print_<fmt> Methoden verwendete positionelle Argumente außer dem ersten (der Dateiname oder die Datei-ähnliche Ausgabe), daher sind diese zusätzlichen Parameter entfernt.
Signatur von QuadMesh#
Die Signatur von QuadMesh
def __init__(meshWidth, meshHeight, coordinates,
antialiased=True, shading='flat', **kwargs)
wurde entfernt und durch die neue Signatur ersetzt
def __init__(coordinates, *, antialiased=True, shading='flat', **kwargs)
Insbesondere
Das Argument coordinates muss jetzt ein (M, N, 2) Array-ähnliches Objekt sein. Zuvor wurde die Mesh-Form separat als (meshHeight + 1, meshWidth + 1) angegeben und coordinates konnte ein Array-ähnliches Objekt beliebiger Form mit M * N * 2 Elementen sein.
Alle Parameter außer coordinates sind jetzt nur noch Schlüsselwortargumente.
Ablauf von Veralterungen in FancyBboxPatch#
Der Konstruktor von FancyBboxPatch akzeptiert nicht mehr den Parameter bbox_transmuter, noch kann der Parameter boxstyle auf "custom" gesetzt werden – stattdessen setzen Sie boxstyle direkt auf die relevante Boxstyle-Instanz. Die Parameter mutation_scale und mutation_aspect sind ebenfalls nur noch Schlüsselwortargumente geworden.
Der Parameter mutation_aspect wird jetzt intern gehandhabt und nicht mehr an die Boxstyle-Callable-Aufrufe übergeben, wenn der Patch-Pfad mutiert wird.
Unterstützung für Tests#
matplotlib.test() wurde entfernt#
Führen Sie Tests stattdessen mit pytest von der Befehlszeile aus. Die Variable matplotlib.default_test_modules wurde nur für matplotlib.test() verwendet und ist somit ebenfalls entfernt.
Um eine installierte Kopie zu testen, stellen Sie sicher, dass Sie sowohl matplotlib als auch mpl_toolkits mit --pyargs angeben.
pytest --pyargs matplotlib.tests mpl_toolkits.tests
Weitere Details finden Sie unter Testing.
Automatische Entfernung von Gittern durch pcolor und pcolormesh#
pcolor und pcolormesh entfernten zuvor alle sichtbaren Hauptgitter der Achse. Dieses Verhalten wurde entfernt; rufen Sie explizit ax.grid(False) auf, um das Gitter zu entfernen.
Modifikation von Axes Kinder-Unterlisten#
Weitere Informationen finden Sie unter Axes-Kinder werden nicht mehr nach Typ getrennt; die Modifikation der folgenden Unterlisten wird nicht mehr unterstützt:
Axes.artistsAxes.collectionsAxes.imagesAxes.linesAxes.patchesAxes.tablesAxes.texts
Um einen Künstler zu entfernen, verwenden Sie seine Artist.remove Methode. Um einen Künstler hinzuzufügen, verwenden Sie die entsprechende Axes.add_* Methode.
Übergabe falscher Typen an Axes.add_* Methoden#
Die folgenden Axes.add_* Methoden lösen nun aus, wenn ein unerwarteter Typ übergeben wird. Sehen Sie in ihrer Dokumentation nach, welche Typen sie erwarten.
ConversionInterface.convert akzeptiert keine einheitlosen Werte mehr#
Zuvor mussten benutzerdefinierte Unterklassen von units.ConversionInterface eine convert-Methode implementieren, die nicht nur Instanzen der Einheit, sondern auch einheitlose Werte akzeptierte (die unverändert durchgereicht werden). Dies ist nicht mehr der Fall (convert wird nie mit einem einheitlosen Wert aufgerufen), und eine solche Unterstützung in .StrCategoryConverter wurde entfernt. Ebenso wurde der Helfer .ConversionInterface.is_numlike entfernt.
Erwägen Sie stattdessen den Aufruf von Axis.convert_units, der weiterhin einheitlose Werte unterstützt.
Normale Liste von Artist-Objekten wird nun von HandlerLine2D.create_artists zurückgegeben#
Für Matplotlib 3.5 und 3.6 wurde eine Proxy-Liste zurückgegeben, die die Rückgabe von HandlerLine2DCompound.create_artists simulierte. Nun wird eine Liste zurückgegeben, die nur den einzelnen Künstler enthält.
rcParams wird Eingaben nicht mehr in str umwandeln#
rcParams, die eine (nicht-pfadartige) Zeichenkette erwarten, wandeln nicht-Zeichenketten-Eingaben nicht mehr mit str um. Dies vermeidet verwirrende Fehler in nachfolgendem Code, wenn z. B. eine Listen-Eingabe implizit in eine Zeichenkette umgewandelt wird.
Groß-/Kleinschreibung-unempfindliche Skalen#
Zuvor konnten Skalen groß-/kleinschreibung-unempfindlich gesetzt werden (z. B. set_xscale("LoG")). Jetzt verwenden alle eingebauten Skalen Kleinbuchstaben.
Unterstützung für nx1 = None oder ny1 = None in AxesLocator und Divider.locate#
In axes_grid1.axes_divider unterstützen verschiedene interne APIs das Übergeben von nx1 = None oder ny1 = None, um nx + 1 oder ny + 1 zu bedeuten, in Vorbereitung auf eine mögliche zukünftige API, die Indizierung und Slicing von Dividers ermöglicht (möglicherweise divider[a:b] == divider.new_locator(a, b), aber auch divider[a:] == divider.new_locator(a, <end>)). Die benutzerorientierte Divider.new_locator API ist davon unberührt – sie normalisiert nx1 = None und ny1 = None wie benötigt.
Änderung der Signatur von .FigureCanvasBase.enter_notify_event#
Der Parameter xy ist nun erforderlich und nur als Schlüsselwortargument zulässig. Dies war in Version 3.0 veraltet und sollte ursprünglich in Version 3.5 entfernt werden.
Colorbar Tick-Update-Parameter#
Der Parameter update_ticks von Colorbar.set_ticks und Colorbar.set_ticklabels wurde seit Version 3.5 ignoriert und wurde entfernt.
Entfernungen der Plot-Direktive#
Die öffentlichen Methoden
matplotlib.sphinxext.split_code_at_showmatplotlib.sphinxext.unescape_doctestmatplotlib.sphinxext.run_code
wurden entfernt.
Die veraltete Option encoding der Plot-Direktive wurde entfernt.
Diverse Entfernungen#
is_urlundURL_REGEXwurden entfernt. (Sie waren zuvor im Toplevel-Modulmatplotlibdefiniert.)Die Attribute
ArrowStyle.beginarrowundArrowStyle.endarrowwurden entfernt; verwenden Sie stattdessen das Attributarrow, um die gewünschten Pfeilspitzen und -enden zu definieren.backend_pgf.LatexManager.str_cachewurde entfernt.backends.qt_compat.ETSundbackends.qt_compat.QT_RC_MAJOR_VERSIONwurden ohne Ersatz entfernt.Das Modul
blocking_inputwurde entfernt. Verwenden Sie stattdessencanvas.start_event_loop()undcanvas.stop_event_loop(), während Sie bei Bedarf Ereignis-Callbacks verbinden.cbook.report_memorywurde entfernt; verwenden Sie stattdessenpsutil.virtual_memory.cm.LUTSIZEwurde entfernt. Verwenden Sie stattdessenrcParams["image.lut"](Standard:256). Dieser Wert wirkt sich nur auf die Quantisierungsstufen von Colormaps für Standard-Colormaps aus, die beim Import des Moduls generiert werden.Colorbar.patchwurde entfernt; dieses Attribut wurde nicht mehr korrekt aktualisiert.ContourLabeler.get_label_widthwurde entfernt.Dvi.baselinewurde ohne Ersatz entfernt.Der Parameter format von
dviread.find_tex_filewurde ohne Ersatz entfernt.FancyArrowPatch.get_path_in_displaycoordundConnectionPath.get_path_in_displaycoordwurden entfernt. Der Pfad in Anzeigekoordinaten kann wie bei anderen Patches immer noch überpatch.get_transform().transform_path(patch.get_path())abgerufen werden.Die Hilfsfunktionen
font_manager.win32InstalledFontsundfont_manager.get_fontconfig_fontswurden entfernt.Alle Parameter von
imshowab aspect sind jetzt nur noch Schlüsselwortargumente.QuadMesh.convert_mesh_to_pathsundQuadMesh.convert_mesh_to_triangleswurden entfernt.QuadMesh.get_paths()kann als Alternative für ersteres verwendet werden; für letzteres gibt es keinen Ersatz.ScalarMappable.callbacksSMwurde entfernt. Verwenden Sie stattdessenScalarMappable.callbacks.streamplot.get_integratorwurde entfernt.style.core.STYLE_FILE_PATTERN,style.core.load_base_libraryundstyle.core.iter_user_librarieswurden entfernt.SubplotParams.validatewurde entfernt. Verwenden SieSubplotParams.update, umSubplotParamszu ändern und es dabei immer in einem gültigen Zustand zu halten.Die Attribute
grey_arrayd,font_family,font_familiesundfont_infovonTexManagerwurden entfernt.Text.get_prop_tupwurde ohne Ersatz entfernt (da die KlasseTextnicht wissen kann, ob ein Backend den Cache aktualisieren muss, z. B. wenn sich die Farbe des Textes ändert).Tick.apply_tickdiraktualisierte die Tick-Markierungen auf den vorhandenen Line2D-Objekten, die zum Zeichnen der Ticks verwendet wurden, nicht und wurde entfernt; verwenden Sie stattdessenAxis.set_tick_params.tight_layout.auto_adjust_subplotparswurde entfernt.Das Attribut
grid_infovonaxisartist-Klassen wurde entfernt.axes_grid1.axes_grid.CbarAxesundaxisartist.axes_grid.CbarAxeswerden entfernt (sie werden jetzt dynamisch basierend auf der besitzenden Achsenklasse generiert).Die Methoden
axes_grid1.Divider.get_vsize_hsizeundaxes_grid1.Grid.get_vsize_hsizewerden entfernt.AxesDivider.append_axes(..., add_to_figure=False)wird entfernt. Verwenden Sieax.remove(), um die Achsen bei Bedarf aus der Figur zu entfernen.FixedAxisArtistHelper.change_tick_coordwird ohne Ersatz entfernt.floating_axes.GridHelperCurveLinear.get_boundarywird ohne Ersatz entfernt.ParasiteAxesBase.get_images_artistswird entfernt.Das Signal "units finalize" (zuvor von Axis-Instanzen emittiert) wird entfernt. Verbinden Sie sich stattdessen mit "units".
Das Positionsweise Übergeben von Formatierungsparametern an
stem()ist nicht mehr möglich.axisartist.clip_pathwird ohne Ersatz entfernt.
Entwicklungsänderungen
Windows Wheel Runtime Bundling#
Für Windows gebaute Wheels bündeln nun die MSVC Runtime DLL msvcp140.dll. Dies ermöglicht den Import von Matplotlib auf Systemen, auf denen die Runtime nicht installiert ist.
Erhöhung der minimal unterstützten Versionen von Abhängigkeiten.
Für Matplotlib 3.7 werden die mindestens unterstützten Versionen angehoben
Abhängigkeit |
min in mpl3.6 |
min in mpl3.7 |
|---|---|---|
NumPy |
1.19 |
1.20 |
pyparsing |
2.2.1 |
2.3.1 |
Qt |
5.10 |
Es gibt keine Wheels oder Conda-Pakete, die sowohl Qt 5.9 (oder älter) als auch Python 3.8 (oder neuer) unterstützen.
Dies stimmt mit unserer Richtlinie für minimale Abhängigkeiten und NEP29 überein
Neue Abhängigkeiten#
importlib-resources (>= 3.2.0; nur erforderlich für Python < 3.10)
Maximale Zeilenlänge auf 88 Zeichen erhöht#
Die maximale Zeilenlänge für neue Beiträge wurde von 79 auf 88 Zeichen erweitert. Diese Änderung bietet zusätzliche 9 Zeichen, um Code, der eine einzelne Idee darstellt, auf weniger Zeilen (oft eine einzelne Zeile) zu passen. Die gewählte Länge ist die gleiche wie bei black.