API-Änderungen für 3.8.0#
Verhaltensänderungen#
Tk-Backend berücksichtigt die Auswahl des Dateiformats beim Speichern von Abbildungen#
Beim Speichern einer Abbildung aus einer Tkinter-GUI in einen Dateinamen ohne Erweiterung wird das Dateiformat nun basierend auf dem Wert des Dropdown-Menüs ausgewählt, anstatt standardmäßig PNG zu verwenden. Wenn der Dateiname eine Erweiterung enthält oder das Betriebssystem automatisch eine hinzufügt, bleibt das Verhalten unverändert.
Platzierung von maximalen und minimalen Nebenticks#
Die Berechnung der Positionen von Nebenticks wurde korrigiert, um die maximalen und minimalen Nebenticks konsistenter zu gestalten. In einigen Fällen führt dies zu einem zusätzlichen Nebentick auf einer Achse.
hexbin verwendet nun standardmäßig rcParams["patch.linewidth"]#
Der Standardwert des Arguments linewidths von Axes.hexbin wurde von 1.0 auf rcParams["patch.linewidth"] (Standard: 1.0) geändert. Dies verbessert die Konsistenz mit QuadMesh in Axes.pcolormesh und Axes.hist2d.
TwoSlopeNorm dehnt sich nun automatisch aus, um immer zwei Steigungen zu haben#
In Fällen, in denen weder vmin noch vmax manuell an TwoSlopeNorm übergeben werden und die Daten, die skaliert werden, alle kleiner oder größer als der Mittelpunkt sind, werden die Grenzen nun automatisch erweitert, sodass symmetrisch große Steigungen auf beiden Seiten des Mittelpunkts vorhanden sind.
Zuvor wurden vmin und vmax am Mittelpunkt beschnitten, was zu Problemen bei der Anzeige von Farbleisten führte.
Dies wirkt sich nicht auf das Verhalten aus, wenn vmin und vmax manuell vom Benutzer angegeben werden.
Ereignisobjekte, die für axes_leave_event ausgegeben werden#
axes_leave_event gibt nun ein synthetisches LocationEvent aus, anstatt das letzte Ereignisobjekt, das mit einem motion_notify_event verbunden war, wiederzuverwenden.
Streamplot zeichnet nun Stromlinien als ein Stück, wenn keine Breiten- oder Farbvarianz vorhanden ist#
Da es nicht notwendig ist, Stromlinien Stück für Stück zu zeichnen, wenn keine Farb- oder Breitenänderung vorhanden ist, zeichnet streamplot nun jede Stromlinie in einem Stück.
Das Verhalten bei variabler Breite oder Farbe bleibt unverändert, für diese Arten von Streamplots wird die gleiche Logik verwendet.
Das Argument canvas ist jetzt für FigureFrameWx erforderlich#
FigureFrameWx erfordert nun ein schlüsselwort-only Argument canvas bei der Konstruktion.
ContourSet ist jetzt eine einzelne Collection#
Vor dieser Veröffentlichung war ContourSet (das von contour zurückgegebene Objekt) ein benutzerdefiniertes Objekt, das mehrere Collections enthielt (und kein Artist) — eine Collection pro Ebene, wobei jede verbundene Komponente dieser Ebene ein Eintrag in der entsprechenden Collection war.
ContourSet ist nun stattdessen eine normale Collection (und somit ein Artist). Die Collection enthält einen einzelnen Pfad pro Konturebene; dieser Pfad kann bei mehreren verbundenen Komponenten nicht zusammenhängend sein.
Das Setzen von Eigenschaften auf dem ContourSet kann nun in der Regel mit den Standard-Collection-Settern (cset.set_linewidth(3), um überall die gleiche Linienbreite zu verwenden, oder cset.set_linewidth([1, 2, 3, ...]), um unterschiedliche Linienbreiten für jede Ebene festzulegen) erfolgen, anstatt über die einzelnen Unterkomponenten gehen zu müssen (cset.collections[0].set_linewidth(...)). Beachten Sie, dass während der Übergangszeit der (veraltete) .collections-Attribut weiterhin zugänglich ist; dies bewirkt, dass sich das ContourSet ändert, um die alte Darstellung mit mehreren Collections zu verwenden.
Die Standard-Flächenfarbe von SubFigure ist nun transparent#
Die Standard-Flächenfarbe von Subfigures wurde auf "none" geändert. Zuvor war der Standardwert der Wert von figure.facecolor.
API-Änderungen nach der Deprecation#
dviread.find_tex_filelöst nunFileNotFoundErroraus, wenn die angeforderte Datei nicht gefunden wird.Figure.colorbarlöst nun einen Fehler aus, wenn cax nicht angegeben ist und nicht bestimmt werden kann, von welcher Achse Platz gestohlen werden soll, d.h. wenn ax ebenfalls nicht angegeben ist und mappable nicht zu einer Achse hinzugefügt wurde.pyplot.subplotundpyplot.subplot2gridentfernen nicht mehr automatisch vorhandene, sich überlappende Achsen; rufen Sie bei Bedarf explizitAxes.removeauf.
Ungültige Typen für Annotation xycoords lösen nun TypeError aus#
Zuvor wurde in einigen Fällen ein RuntimeError ausgelöst.
Standardverhalten für Antialiasing ändert sich für Text und Annotation#
matplotlib.pyplot.annotate() und matplotlib.pyplot.text() unterstützen nun den Parameter antialiased bei der Initialisierung. Beispiele
mpl.text.Text(.5, .5, "foo\nbar", antialiased=True)
plt.text(0.5, 0.5, '6 inches x 2 inches', antialiased=True)
ax.annotate('local max', xy=(2, 1), xytext=(3, 1.5), antialiased=False)
Siehe "Was ist neu" für weitere Details zur Verwendung.
Mit dieser neuen Funktion sollten Sie sicherstellen, dass Sie die Abbildung im gleichen Kontext erstellen und speichern/anzeigen.
# previously this was a no-op, now it is what works
with rccontext(text.antialiased=False):
fig, ax = plt.subplots()
ax.annotate('local max', xy=(2, 1), xytext=(3, 1.5))
fig.savefig('/tmp/test.png')
# previously this had an effect, now this is a no-op
fig, ax = plt.subplots()
ax.annotate('local max', xy=(2, 1), xytext=(3, 1.5))
with rccontext(text.antialiased=False):
fig.savefig('/tmp/test.png')
Beachten Sie auch, dass das Antialiasing für Tick-Beschriftungen mit rcParams["text.antialiased"] (Standard: True) gesetzt wird, wenn sie erstellt werden (normalerweise, wenn eine Figure erstellt wird) - Das bedeutet, dass das Antialiasing für sie nicht mehr durch Änderung von rcParams["text.antialiased"] (Standard: True) geändert werden kann.
ScalarMappable.to_rgba() berücksichtigt nun die Maske von RGB(A)-Arrays#
Zuvor wurde die Maske ignoriert. Nun wird der Alpha-Kanal auf 0 gesetzt, wenn eine Komponente (R, G, B oder A) maskiert ist.
Rückgabewert von Text.get_rotation_mode#
Wenn None als rotation_mode an Text (der Standardwert) übergeben wird oder wenn er an Text.set_rotation_mode übergeben wird, gibt Text.get_rotation_mode nun "default" anstelle von None zurück. Das Verhalten ist ansonsten dasselbe.
PostScript-Papiergröße fügt Option zur Verwendung der Abbildungsgröße hinzu#
Der rcParam rcParams["ps.papersize"] (Standard: 'letter') kann nun auf 'figure' gesetzt werden, was eine Papiergröße verwendet, die exakt der Größe der zu speichernden Abbildung entspricht.
mincnt-Parameter von hexbin ist jetzt konsistent inklusiv#
Zuvor war mincnt inklusiv, wenn kein C bereitgestellt wurde, aber exklusiv, wenn C bereitgestellt wurde. Es ist nun in beiden Fällen inklusiv von mincnt.
matplotlib.mpl_toolkits ist jetzt ein implizites Namespace-Paket#
Nach der Deprecation von pkg_resources.declare_namespace in setuptools 67.3.0 wird matplotlib.mpl_toolkits nun als impliziter Namespace implementiert, gemäß PEP 420.
Als Folge davon schlägt die Installation einer Matplotlib-Version >= 3.8 mit pip über einer Matplotlib-Version < 3.8 (z. B. über pip install --local oder python -m venv --system-site-packages ...) fehl, da die alten matplotlib.mpl_toolkits-Dateien gefunden werden, während die neueren Dateien für alle anderen Module gefunden werden. Dies führt zu Fehlern aufgrund der Versionsinkonsistenz.
Um dieses Problem zu vermeiden, müssen Sie es vermeiden, mehrere Versionen von Matplotlib in verschiedenen Einträgen von sys.path zu haben. Deinstallieren Sie Matplotlib entweder auf Systemebene oder verwenden Sie eine isoliertere virtuelle Umgebung.
Deprecations#
Aufruf von paths.get_path_collection_extents mit leeren offsets#
Der Aufruf von get_path_collection_extents mit einem leeren Parameter offsets hat eine mehrdeutige Interpretation und ist daher veraltet. Wenn die Deprecationsperiode abläuft, wird dies einen Fehler verursachen.
API-Änderungen in axes_grid1.axes_divider#
Die Klasse AxesLocator ist veraltet. Die Methode new_locator von Divider-Instanzen gibt nun stattdessen einen undurchsichtigen aufrufbaren Wert zurück (der immer noch an ax.set_axes_locator übergeben werden kann).
Divider.locate ist veraltet; verwenden Sie stattdessen Divider.new_locator(...)(ax, renderer).
bbox.anchored() ohne expliziten Container#
Das Nicht-Übergeben eines container-Arguments an BboxBase.anchored ist nun veraltet.
Funktionen in mpl_toolkits.mplot3d.proj3d#
Die Funktion transform ist nur ein Alias für proj_transform, verwenden Sie letzteres stattdessen.
Die folgenden Funktionen sind entweder unbenutzt (daher in Matplotlib nicht mehr erforderlich) oder gelten als privat. Wenn Sie sich auf sie verlassen, erstellen Sie bitte eine Kopie des Codes, einschließlich aller Funktionen, die mit einem _ beginnen (gelten als privat).
ortho_transformationpersp_transformationproj_pointsproj_trans_pointsrot_xrotation_about_vectorview_transformation
Argumente außer renderer an get_tightbbox#
... sind schlüsselwort-only Argumente. Dies dient der Konsistenz und da verschiedene Klassen unterschiedliche zusätzliche Argumente haben.
Das von pcolor() zurückgegebene Objekt wurde zu einer PolyQuadMesh-Klasse geändert#
Das alte Objekt war eine PolyCollection mit abgeflachten Eckpunkten und Array-Daten. Die neue Klasse PolyQuadMesh erbt von PolyCollection, fügt aber eine bessere Handhabung von 2D-Koordinaten und Arrays im Einklang mit QuadMesh hinzu. Zuvor, wenn ein maskiertes Array eingegeben wurde, schrumpfte die Liste der Polygone innerhalb der Collection auf die Größe der gültigen Polygone, und Benutzer mussten verfolgen, welche Polygone gezeichnet wurden, und set_array() mit der kleineren "komprimierten" Array-Größe aufrufen. Das Übergeben der "komprimierten" und abgeflachten Array-Werte ist nun veraltet, und das vollständige 2D-Array von Werten (einschließlich der Maske) sollte an PolyQuadMesh.set_array übergeben werden.
LocationEvent.lastevent#
... ist veraltet und hat keinen Ersatz.
Attribute allsegs, allkinds, tcolors und tlinewidths von ContourSet#
Diese Attribute sind veraltet; falls erforderlich, rufen Sie die Eckpunkte und Codes der Pfadobjekte direkt von ContourSet.get_paths() und die Farben sowie die Linienbreiten über ContourSet.get_facecolor(), ContourSet.get_edgecolor() und ContourSet.get_linewidths() ab.
ContourSet.collections#
... ist veraltet. ContourSet ist nun als eine einzelne Collection von Pfaden implementiert, wobei jeder Pfad einer Konturebene entspricht und möglicherweise mehrere nicht verbundene Komponenten enthält.
Während der Deprecationsperiode wird der Zugriff auf ContourSet.collections die aktuelle ContourSet-Instanz auf das alte Objektlayout zurücksetzen, mit einer separaten PathCollection pro Konturebene.
Attribute INVALID_NON_AFFINE, INVALID_AFFINE, INVALID von TransformNode#
Diese Attribute sind veraltet.
Grouper.clean()#
ohne Ersatz. Die Klasse Grouper bereinigt sich nun automatisch.
GridHelperCurveLinear.get_data_boundary#
... ist veraltet. Verwenden Sie grid_finder.extreme_finder(*[None] * 5), um die Extreme des Gitters zu erhalten.
Parameter np_load von cbook.get_sample_data#
Dieser Parameter ist veraltet; get_sample_data lädt nun automatisch Numpy-Arrays. Verwenden Sie stattdessen get_sample_data(..., asfileobj=False), um den Dateinamen der Datendatei zu erhalten, der dann bei Bedarf an open übergeben werden kann.
RendererAgg.tostring_rgb und FigureCanvasAgg.tostring_rgb#
... sind veraltet und haben keinen direkten Ersatz. Erwägen Sie die Verwendung von buffer_rgba anstelle dessen, was die meisten Anwendungsfälle abdecken sollte.
Der Parameter von Annotation.contains und Legend.contains wird in mouseevent umbenannt#
... konsistent mit Artist.contains.
Zugriff auf event.guiEvent nach Rückkehr von Ereignishandlern#
... ist veraltet: Bei einigen GUI-Toolkits ist dies unsicher. In Zukunft wird event.guiEvent auf None gesetzt, sobald die Ereignishandler zurückkehren; Sie können das Objekt separat auf eigenes Risiko aufbewahren.
Widgets#
Der visible-Attribut-Getter von Selector-Widgets ist veraltet; verwenden Sie get_visible
Methodenparameter umbenannt, um Basisklassen anzupassen#
Der einzige Parameter von transform_affine und transform_non_affine in Transform-Unterklassen wird in values umbenannt.
Der Parameter points von transforms.IdentityTransform.transform wird in values umbenannt.
Der Parameter trans von table.Cell.set_transform wird in t umbenannt, konsistent mit Artist.set_transform.
Die Parameter clippath von axis.Axis.set_clip_path und axis.Tick.set_clip_path werden in path umbenannt, konsistent mit Artist.set_clip_path.
Der Parameter s von images.NonUniformImage.set_filternorm wird in filternorm umbenannt, konsistent mit _ImageBase.set_filternorm.
Der Parameter s von images.NonUniformImage.set_filterrad wird in filterrad umbenannt, konsistent mit _ImageBase.set_filterrad.
Parameter und Attribut numdecs von LogLocator#
... sind veraltet und werden ohne Ersatz entfernt, da sie keine Auswirkung haben.
ft2font.FT2Image.draw_rect und ft2font.FT2Font.get_xys#
... sind veraltet, da sie ungenutzt sind. Wenn Sie sich darauf verlassen, teilen Sie uns dies bitte mit.
backend_ps.psDefs#
Die Modul-weit variable psDefs in backend_ps ist veraltet und wird ohne Ersatz entfernt.
Callable axisartist Axes#
Das Aufrufen eines axisartist Axes für axis ist veraltet; rufen Sie stattdessen explizit die Methode auf.
AnchoredEllipse ist veraltet#
Konstruieren Sie stattdessen direkt ein AnchoredOffsetbox, eine AuxTransformBox und ein Ellipse, wie in Anchored Artists gezeigt.
Automatische Papiergrößenauswahl in PostScript#
Das Setzen von rcParams["ps.papersize"] (Standard: 'letter') auf 'auto' oder das Übergeben von papersize='auto' an Figure.savefig ist veraltet. Übergeben Sie entweder einen expliziten Papiertyppnamen oder lassen Sie diesen Parameter weg, um den Standardwert aus dem rcParam zu verwenden.
Tick.set_label1 und Tick.set_label2#
... sind veraltet. Das Aufrufen dieser Methoden aus Drittanbietercode hat normalerweise keine Auswirkung, da die Labels zur Zeichenzeit vom Tick-Formatter überschrieben werden.
Übergabe zusätzlicher Positionsargumente an Figure.add_axes#
Positionsargumente, die an Figure.add_axes übergeben werden und die keine Rechteckkoordinaten oder ein vorhandenes Axes sind, werden derzeit ignoriert, und dies ist nun veraltet.
CbarAxesBase.toggle_label#
... ist veraltet. Verwenden Sie stattdessen Standardmethoden zur Manipulation von Farbleisten-Labels (Colorbar.set_label) und Tick-Labels (Axes.tick_params).
TexManager.texcache#
... wird als privat und veraltet betrachtet. Der Speicherort des Cache-Verzeichnisses wird in der Docstring erläutert.
Künstler, die explizit übergeben werden, werden von legend() nicht mehr nach ihrem Label gefiltert#
Derzeit werden Künstler, die explizit an legend(handles=[...]) übergeben werden, herausgefiltert, wenn ihr Label mit einem Unterstrich beginnt. Dieses Verhalten ist veraltet; filtern Sie solche Künstler explizit heraus ([art for art in artists if not art.get_label().startswith('_')]), falls erforderlich.
FigureCanvasBase.switch_backends#
... ist veraltet und hat keinen Ersatz.
cbook.Stack ist veraltet#
... ohne Ersatz.
inset_location.InsetPosition ist veraltet#
Verwenden Sie stattdessen inset_axes.
axisartist.axes_grid und axisartist.axes_rgb#
Diese Module, die Wrapper für die Funktionalität von axes_grid1 und axisartist bereitstellen, sind veraltet; verwenden Sie stattdessen direkt z.B. AxesGrid(..., axes_class=axislines.Axes).
ContourSet.antialiased#
... ist veraltet; verwenden Sie stattdessen get_antialiased oder set_antialiased. Beachten Sie, dass get_antialiased ein Array zurückgibt.
Übergabe von Nicht-Ganzzahlen oder Sequenzen von Nicht-Ganzzahlen an Table.auto_set_column_width#
Spaltennummern sind Ganzzahlen, und früher wurden alle anderen Typen effektiv ignoriert. Dies wird in Zukunft zu einem Fehler führen.
PdfPages(keep_empty=True)#
Eine PDF mit null Seiten ist nicht gültig, daher ist die Übergabe von keep_empty=True an backend_pdf.PdfPages und backend_pgf.PdfPages sowie das Attribut keep_empty dieser Klassen veraltet. Derzeit behalten diese Klassen leere Ausgaben standardmäßig bei, aber auch dieses Verhalten ist veraltet. Die explizite Übergabe von keep_empty=False wird vorerst zur Umstellung auf das neue Verhalten weiterhin unterstützt.
Darüber hinaus erstellt backend_pdf.PdfPages die Zieldatei nicht mehr sofort bei der Instanziierung, sondern erst, wenn die erste Abbildung gespeichert wird. Um die Dateierstellung vollständig zu steuern, übergeben Sie direkt ein geöffnetes Dateiobjekt als Argument (with open(path, "wb") as file, PdfPages(file) as pdf: ...).
Automatisches Schließen von Abbildungen beim Wechseln des Backends#
... ist veraltet. Rufen Sie bei Bedarf explizit plt.close("all") auf. Zukünftig werden zulässige Backend-Wechsel (d.h. solche, die keine GUI-Ereignisschleife mit einer anderen vertauschen) bestehende Abbildungen nicht schließen.
Unterstützung für die Übergabe des Schlüssels "frac" in annotate(..., arrowprops={"frac": ...})#
... wurde entfernt. Dieser Schlüssel hatte seit Matplotlib 1.5 keine Auswirkung mehr.
Entfernungen#
cbook-Entfernungen#
matplotlib.cbook.MatplotlibDeprecationWarningundmatplotlib.cbook.mplDeprecationwurden entfernt; verwenden Sie stattdessenmatplotlib.MatplotlibDeprecationWarning.cbook.maxdict; verwenden Sie stattdessen die Standardbibliothekfunctools.lru_cache.
Veraltete Module entfernt#
Die folgenden veralteten Module wurden entfernt
afmdocstringfontconfig_patterntight_bboxtight_layouttype1font
Parameter für plt.figure() und den Figure-Konstruktor#
Alle Parameter für pyplot.figure und den Figure-Konstruktor, außer num, figsize und dpi, sind nun nur noch als Schlüsselwortargumente zulässig.
stem(..., use_line_collection=False)#
... wird nicht mehr unterstützt. Dies war ein Kompatibilitäts-Fallback zu einer früheren, ineffizienteren Darstellung der Stem-Linien.
Positions- / Schlüsselwortargumente#
Die Übergabe aller bis auf die ersten wenigen Argumente als Positionsargumente in den Konstruktoren von Artists ist nicht mehr möglich. Die meisten Argumente sind nun nur noch als Schlüsselwortargumente zulässig.
Die Parameter emit und auto von set_xlim, set_ylim, set_zlim, set_rlim sind nun nur noch als Schlüsselwortargumente zulässig.
Der Parameter transOffset von Collection.set_offset_transform und die verschiedenen create_collection-Methoden von Legend-Handlern wurden in offset_transform umbenannt (konsistent mit dem Eigenschaftsnamen).
Axes.get_window_extent / Figure.get_window_extent akzeptieren nur noch renderer. Dies gleicht die API mit der allgemeinen Artist.get_window_extent-API an. Alle anderen Parameter wurden ohnehin ignoriert.
Methoden zum Setzen von Parametern in LogLocator und LogFormatter*#
In LogFormatter und abgeleiteten Unterklassen wurden die Methoden base und label_minor zum Setzen des jeweiligen Parameters entfernt und durch set_base bzw. set_label_minor ersetzt.
In LogLocator wurden die Methoden base und subs zum Setzen des jeweiligen Parameters entfernt. Verwenden Sie stattdessen set_params(base=..., subs=...).
Axes.get_renderer_cache#
Die Zeichenfläche kümmert sich nun um den Renderer und darum, ob er zwischengespeichert wird oder nicht, sodass die Methode Axes.get_renderer_cache entfernt wurde. Die Alternative ist der Aufruf von axes.figure.canvas.get_renderer().
Ungenutzte Methoden in Axis, Tick, XAxis und YAxis#
Tick.label wurde entfernt. Verwenden Sie stattdessen Tick.label1.
Die folgenden Methoden werden nicht mehr verwendet und ohne Ersatz entfernt
Axis.get_ticklabel_extentsTick.get_pad_pixelsXAxis.get_text_heightsYAxis.get_text_widths
mlab.stride_windows#
... wurde entfernt. Verwenden Sie stattdessen numpy.lib.stride_tricks.sliding_window_view.
Axes3D#
Das Attribut dist wurde privatisiert. Verwenden Sie stattdessen das Schlüsselwortargument zoom in Axes3D.set_box_aspect.
Die Attribute w_xaxis, w_yaxis und w_zaxis wurden entfernt. Verwenden Sie stattdessen xaxis, yaxis und zaxis.
3D-Achse#
mplot3d.axis3d.Axis.set_pane_pos wurde entfernt. Dies ist eine interne Methode, bei der die übergebenen Werte während des Zeichnens überschrieben werden. Daher dient sie keinem Zweck, direkt zugänglich zu sein.
Die beiden Hilfsfunktionen mplot3d.axis3d.move_from_center und mplot3d.axis3d.tick_update_position gelten als intern und sind veraltet. Wenn diese benötigt werden, übernehmen Sie bitte den Code aus den entsprechenden privaten Methoden _move_from_center und _tick_update_position.
checkdep_usetex entfernt#
Diese Methode war nur dazu gedacht, Tests zu deaktivieren, falls keine Latex-Installation gefunden wurde. Daher wird sie als privat und nur für den internen Gebrauch betrachtet.
Übernehmen Sie den Code aus einer früheren Version, wenn Sie ihn benötigen.
date_ticker_factory entfernt#
Die Methode date_ticker_factory im Modul matplotlib.dates wurde entfernt. Verwenden Sie stattdessen AutoDateLocator und AutoDateFormatter für einen flexibleren und skalierbareren Locator und Formatter.
Wenn Sie das exakte Verhalten von date_ticker_factory benötigen, kopieren Sie den Code aus einer früheren Version.
transforms.Affine2D.identity()#
... wird zugunsten des direkten Aufrufs des Affine2D-Konstruktors ohne Argumente entfernt.
Entfernungen in testing.decorators#
Die ungenutzte Klasse CleanupTestCase und der Dekorator cleanup wurden entfernt. Die Funktion check_freetype_version wird als intern betrachtet und entfernt. Übernehmen Sie den Code aus einer früheren Version.
text.get_rotation()#
... wurde ohne Ersatz entfernt. Kopieren Sie die vorherige Implementierung, falls erforderlich. Figure.callbacks wurde entfernt ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Die callbacks-Eigenschaft der Figure wurde entfernt. Das einzige Signal war "dpi_changed", das durch das Verbinden mit dem "resize_event" auf der Canvas figure.canvas.mpl_connect("resize_event", func) ersetzt werden kann.
Übergabe zu vieler Positionsargumente an tripcolor#
... löst TypeError aus (zusätzliche Argumente wurden zuvor ignoriert).
Das Argument filled für Colorbar wurde entfernt#
Dieses Verhalten wurde bereits durch die zugrundeliegende ScalarMappable gesteuert.
Widgets#
Der Setter für das Attribut visible von Selector-Widgets wurde entfernt; verwenden Sie set_visible. Der zugehörige Getter ist ebenfalls veraltet, aber noch nicht abgelaufen.
Axes3D.set_frame_on und Axes3D.get_frame_on entfernt#
Axes3D.set_frame_on ist dokumentiert als "Setzt, ob die 3D-Achsen-Panels gezeichnet werden.". Dies hat jedoch keine Auswirkung auf 3D-Achsen und wird zugunsten von Axes3D.set_axis_on und Axes3D.set_axis_off entfernt.
Verschiedene interne Elemente#
axes_grid1.axes_size.AddList; verwenden Sie stattdessen z.B.sum(sizes, start=Fixed(0)), um mehrere Größenobjekte zu summieren.axes_size.Padded; verwenden Sie stattdessensize + padaxes_size.SizeFromFunc,axes_size.GetExtentHelperAxisArtistHelper.delta1undAxisArtistHelper.delta2axislines.GridHelperBase.new_gridlinesundaxislines.Axes.new_gridlines_DummyAxis.dataLimund_DummyAxis.viewLim; verwenden Sie stattdessenget_data_interval(),set_data_interval(),get_view_interval()undset_view_interval().ImageMagickBase.delayundImageMagickBase.output_argsMathtextBackend,MathtextBackendAgg,MathtextBackendPath,MathTextWarningTexManager.get_font_config; es gab zuvor einen internen Hash-Schlüssel für Caching-Zwecke zurück.TextToPath.get_texmanager; konstruieren Sie stattdessen direkt eintexmanager.TexManager.ticker.is_close_to_int; verwenden Sie stattdessenmath.isclose(x, round(x)).ticker.is_decade; verwenden Sie stattdesseny = numpy.log(x)/numpy.log(base); numpy.isclose(y, numpy.round(y)).
Backend-spezifische Entfernungen#
backend_pdf.Name.hexifybackend_pdf.Operatorundbackend_pdf.Op.opwurden zugunsten einer einzelnen Standard-enum.Enum-Schnittstelle aufbackend_pdf.Opentfernt.backend_pdf.fill; übernehmen Sie den Code der gleichnamigen privaten Funktionen, falls Sie sich auf diese Funktionen verlassen.backend_pgf.LatexManager.texcommandundbackend_pgf.LatexManager.latex_headerbackend_pgf.NO_ESCAPEbackend_pgf.common_texificationbackend_pgf.get_fontspecbackend_pgf.get_preamblebackend_pgf.re_mathsepbackend_pgf.writelnbackend_ps.convert_psfragsbackend_ps.quote_ps_string; übernehmen Sie den Code der gleichnamigen privaten Funktionen, falls Sie sich darauf verlassen.backend_svg.escape_attrib; übernehmen Sie den Code der gleichnamigen privaten Funktionen, falls Sie sich darauf verlassen.backend_svg.escape_cdata; übernehmen Sie den Code der gleichnamigen privaten Funktionen, falls Sie sich darauf verlassen.backend_svg.escape_comment; übernehmen Sie den Code der gleichnamigen privaten Funktionen, falls Sie sich darauf verlassen.backend_svg.short_float_fmt; übernehmen Sie den Code der gleichnamigen privaten Funktionen, falls Sie sich darauf verlassen.backend_svg.generate_transformundbackend_svg.generate_css
Entfernung veralteter APIs#
Die folgenden veralteten APIs wurden entfernt. Sofern kein Ersatz angegeben ist, übernehmen Sie die vorherige Implementierung, falls erforderlich.
Die folgenden Methoden von
FigureCanvasBase:pick(verwende stattdessenFigure.pick),resize,draw_event,resize_event,close_event,key_press_event,key_release_event,pick_event,scroll_event,button_press_event,button_release_event,motion_notify_event,leave_notify_event,enter_notify_event(für allefoo_eventMethoden, konstruiere stattdessen das relevanteEventObjekt und rufecanvas.callbacks.process(event.name, event)auf).ToolBase.destroy(verbinde stattdessen mittool_removed_event).Der Parameter cleared zu
FigureCanvasAgg.get_renderer(rufe stattdessenrenderer.clear()auf).Die folgenden Methoden von
RendererCairo:set_ctx_from_surfaceundset_width_height(verwende stattdessenset_context, welches die Canvas-Größe automatisch ableitet).Die Parameter und/oder Attribute
windowoderwinvonNavigationToolbar2Tk,NavigationToolbar2GTK3undNavigationToolbar2GTK4, sowie das AttributlastrectvonNavigationToolbar2TkDie Funktion
error_msg_gtkund die globalen Variablenicon_filenameundwindow_iconinbackend_gtk3; die Funktionerror_msg_wxinbackend_wx.FigureManagerGTK3AggundFigureManagerGTK4Agg(verwende stattdessenFigureManagerGTK3);RendererGTK3CairoundRendererGTK4Cairo.NavigationToolbar2Mac.prepare_configure_subplots(verwende stattdessenconfigure_subplots).FigureManagerMac.close.Die globale Variable
qAppinbackend_qt(verwende stattdessenQtWidgets.QApplication.instance()).Die Methode
offset_text_heightvonRendererWx; die Attribute oder Methodensizer,figmgr,num,toolbar,toolmanager,get_canvasundget_figure_managervonFigureFrameWx(verwende stattdessenframe.GetSizer(),frame.canvas.manager,frame.canvas.manager.num,frame.GetToolBar(),frame.canvas.manager.toolmanager, den Konstruktorparameter canvas_class undframe.canvas.manager, jeweils).FigureFrameWxAggundFigureFrameWxCairo(verwende stattdessenFigureFrameWx(..., canvas_class=FigureCanvasWxAgg)bzw.FigureFrameWx(..., canvas_class=FigureCanvasWxCairo)).Das Attribut
filledund die Methodedraw_allvonColorbar(verwende stattdraw_allfigure.draw_without_rendering).Aufruf von
MarkerStyleohne Setzen des Parameters marker oder Setzen auf None (verwende stattdessenMarkerStyle("")).Unterstützung für Canvas-Klassen von Drittanbietern ohne ein Attribut
required_interactive_framework(dies kann nur auftreten, wenn die Canvas-Klasse nicht vonFigureCanvasBaseerbt).Die Attribute
canvasundbackgroundvonMultiCursor; das Attributstate_modifier_keysvon Selektor-Widgets.Übergabe von useblit, horizOn oder vertOn positionell an
MultiCursor.Unterstützung für die Stile
seaborn-<foo>; verwende stattdessenseaborn-v0_8-<foo>oder verwende direkt die Seaborn API.
Entwicklungsänderungen#
Erhöhung der minimal unterstützten Versionen von Abhängigkeiten.
Für Matplotlib 3.8 werden die minimal unterstützten Versionen angehoben
Abhängigkeit |
min in mpl3.7 |
min in mpl3.8 |
|---|---|---|
Python |
3.8 |
3.9 |
kiwisolver |
1.0.1 |
1.3.1 |
NumPy |
1.20.0 |
1.21.0 |
Pillow |
6.2.1 |
8.0 |
Dies stimmt mit unserer Richtlinie für minimale Abhängigkeiten und NEP29 überein
Erhöhung der minimal unterstützten optionalen Abhängigkeiten#
Für Matplotlib 3.8 werden die minimal unterstützten Versionen optionaler Abhängigkeiten angehoben
Abhängigkeit |
min in mpl3.7 |
min in mpl3.8 |
|---|---|---|
Tk |
8.4 |
8.5 |
Qt |
5.10 |
5.12 |
Es gibt keine Wheels oder Conda-Pakete, die sowohl Qt 5.11 (oder älter) als auch Python 3.9 (oder neuer) unterstützen.
Dies stimmt mit unserer Richtlinie für minimale Abhängigkeiten überein
Vorläufige Unterstützung für PEP484 Typ-Annotationen#
Neue öffentliche API muss in .pyi Stub-Dateien mit Typ-Annotationen versehen werden (außer pyplot und Tests, die inline typisiert werden). Tests sollten minimal typisiert werden, im Wesentlichen nur, wenn mypy Fehler generiert.
CI und Konfiguration für die Ausführung von mypy wurden hinzugefügt.
Generierung von pyplot.py erfordert black#
Die automatisch generierten Teile von pyplot.py verwenden black Autoformatierung, um syntaktisch korrekten, lesbaren Ausgabe-Code zu gewährleisten.
Daher ist black jetzt eine Entwicklungs- und Testanforderung (für den Test, der pyplot neu generiert).
Wheels für einige Systeme werden nicht mehr verteilt#
Vorkompilierte Wheels für 32-Bit-Linux und Windows werden seit Matplotlib 3.8 nicht mehr auf PyPI bereitgestellt.
Multi-Architektur universal2 Wheels für macOS werden seit Matplotlib 3.8 nicht mehr auf PyPI bereitgestellt. Im Allgemeinen wird pip immer die architektur-spezifischen (amd64- oder arm64-only) Wheels bevorzugen, sodass diese wenig Nutzen brachten.
Neue Wheel-Architekturen#
Wheels wurden hinzugefügt für
Musl-basierte Systeme