API-Änderungen in 1.4.x#
Code-Änderungen#
Eine größere Refaktorierung des Achsenmoduls wurde vorgenommen. Das Achsenmodul wurde in kleinere Module aufgeteilt:
das Modul
_base, das eine neue private Klasse_AxesBaseenthält. Diese Klasse enthält alle Methoden außer den Zeichen- und Beschriftungsmethoden.das Modul
axes, das die Klasseaxes.Axesenthält. Diese Klasse erbt von_AxesBaseund enthält alle Zeichen- und Beschriftungsmethoden.das Modul
_subplotmit allen Klassen, die sich auf Unterplots beziehen.
Es gibt einige Dinge, die nicht mehr im Namespace des Moduls
axesvorhanden sind. Wenn Sie diese verwenden, müssen Sie sie von ihrem ursprünglichen Speicherort importieren:math->import mathma->from numpy import macbook->from matplotlib import cbookdocstring->from matplotlib import docstringis_sequence_of_strings->from matplotlib.cbook import is_sequence_of_stringsis_string_like->from matplotlib.cbook import is_string_likeiterable->from matplotlib.cbook import iterableitertools->import itertoolsmartist->from matplotlib import artist as martistmatplotlib->import matplotlibmcoll->from matplotlib import collections as mcollmcolors->from matplotlib import colors as mcolorsmcontour->from matplotlib import contour as mcontourmpatches->from matplotlib import patches as mpatchesmpath->from matplotlib import path as mpathmquiver->from matplotlib import quiver as mquivermstack->from matplotlib import stack as mstackmstream->from matplotlib import stream as mstreammtable->from matplotlib import table as mtable
Als Teil der Refaktorierung zur Unterstützung von Qt5 wurde das Modul
matplotlib.backends.qt4_compatinmatplotlib.backends.qt_compatumbenannt.qt4_compatist in Version 1.4 veraltet und wird in Version 1.5 entfernt.Die Methode
errorbar()wurde so geändert, dass die oberen und unteren Grenzen (lolims, uplims, xlolims, xuplims) nun in die richtige Richtung zeigen.Das fmt-Schlüsselwortargument für
errorbar()unterstützt nun die Zeichenfolge 'none', um das Zeichnen einer Linie und von Markern zu unterdrücken; die Verwendung des None-Objekts hierfür ist veraltet. Der Standardwert für fmt wurde auf eine leere Zeichenfolge ('') geändert, sodass Linie und Marker von den Standardeinstellungen vonplot()gesteuert werden.Ein Fehler bei der Pfad-Effekt-Darstellung von Schriftarten wurde behoben, wodurch die Schriftgröße nun konsistent mit Schriftarten ohne Pfad-Effekte ist. Weitere Details finden Sie unter matplotlib/matplotlib#2889.
Die Sphinx-Erweiterungen
ipython_directiveundipython_console_highlightingwurden in das IPython-Projekt selbst verschoben. Obwohl sie für diese Veröffentlichung noch in Matplotlib vorhanden sind, wurden sie als veraltet gekennzeichnet. Aktualisieren Sie Ihre Erweiterungen inconf.py, damit sie aufIPython.sphinxext.ipython_directiveanstatt aufmatplotlib.sphinxext.ipython_directiveverweisen.In
matplotlib.financewurden fast alle Funktionen als veraltet gekennzeichnet und durch ein Paar von Funktionen namens*_ochlund*_ohlcersetzt. Die erste ist die Reihenfolge der Zitate "Öffnen-Schließen-Hoch-Tief", die zuvor in diesem Modul verwendet wurde, und die letztere ist die Reihenfolge "Öffnen-Hoch-Tief-Schließen", die in der Finanzwelt Standard ist.Zur Konsistenz wurde das Schlüsselwort
face_alphafürmatplotlib.patheffects.SimplePatchShadowdurch das Schlüsselwortalphaersetzt. Ebenso heißt das Schlüsselwortoffset_xynunoffsetin allenAbstractPathEffects.matplotlib.patheffects._Basewurde inmatplotlib.patheffects.AbstractPathEffectumbenannt.matplotlib.patheffect.ProxyRendererwurde inmatplotlib.patheffects.PathEffectRendererumbenannt und ist nun eine vollständige RendererBase-Unterklasse.Der Künstler, der zum Zeichnen des Umrisses eines
Figure.colorbarverwendet wurde, wurde von einemmatplotlib.lines.Line2Dzu einemmatplotlib.patches.Polygongeändert, sodasscolorbar.ColorbarBase.outlinenun einmatplotlib.patches.Polygon-Objekt ist.Die Schnittstelle des Legenden-Handlers wurde von einem aufrufbaren Objekt zu einem beliebigen Objekt geändert, das die Methode
legend_artistsimplementiert (eine Verhaltensphase wird diese Schnittstelle für v1.4 beibehalten). Weitere Einzelheiten finden Sie im Leitfaden für Legenden. Weitere Änderungen an Legenden umfassen:matplotlib.axes.Axes._get_legend_handlesgibt nun einen Generator von Handles zurück, anstatt einer Liste.Das Positionsargument loc der Funktion
legend()ist veraltet. Verwenden Sie stattdessen das Schlüsselwortargument loc.
Die
rcParams["savefig.transparent"](Standard:False) wurde hinzugefügt, um die Standardtransparenz beim Speichern von Abbildungen zu steuern.Die Annotationen-Familie wurde leicht refaktoriert. Die Textposition in
Annotationwird nun vollständig vom zugrunde liegendenText-Objekt gehandhabt, sodass.set_positionwie erwartet funktioniert. Die Attribute xytext und textcoords sind veraltet zugunsten von xyann und anncoords, damitAnnotationundAnnotationBboxeine gemeinsame, sinnvoll benannte API für das Abrufen/Setzen der Position des Textes oder der Box haben können.xyann -> setzt die Position der Annotation
xy -> setzt, worauf der Pfeil zeigt
anncoords -> setzt die Einheiten der Annotationsposition
xycoords -> setzt die Einheiten des Punktes
set_position()->Annotationsetzt nur die Position der Annotation
matplotlib.mlab.specgram,matplotlib.mlab.psd,matplotlib.mlab.csd,matplotlib.mlab.cohere,matplotlib.mlab.cohere_pairs,matplotlib.pyplot.specgram,matplotlib.pyplot.psd,matplotlib.pyplot.csdundmatplotlib.pyplot.coherelösen nun ValueError aus, wo sie zuvor AssertionError auslösten.Für
matplotlib.mlab.psd,matplotlib.mlab.csd,matplotlib.mlab.cohere,matplotlib.mlab.cohere_pairs,matplotlib.pyplot.specgram,matplotlib.pyplot.psd,matplotlib.pyplot.csdundmatplotlib.pyplot.coherewerden in Fällen, in denen ein Array der Form (n, 1) zurückgegeben wird, diese nun in ein (n,)-Array umgewandelt. Zuvor wurden (n, m)-Arrays zu einem (n,)-Array gemittelt, aber (n, 1)-Arrays wurden unverändert zurückgegeben. Diese Änderung macht die Dimensionen in beiden Fällen konsistent.Unterstützung für
rcParams["axes.formatter.useoffset"](Standard:True) hinzugefügt, um den Standardwert von useOffset inticker.ScalarFormatterzu steuern.Die
Formatter-UnterklasseStrMethodFormatterwurde hinzugefügt, die exakt dasselbe tut wieFormatStrFormatter, jedoch für neue Formatierungszeichenfolgen.matplotlib.testing.image_utilund die einzige darin enthaltene Funktion,matplotlib.testing.image_util.autocontrast, sind veraltet. Diese werden in Version 1.5.0 vollständig entfernt.Das Argument
fmtvonplot_date()wurde vonbozu nurogeändert, damit die Farbzyklierung standardmäßig erfolgen kann.Die Klasse
FigureManagerQTAggwurde entfernt undNavigationToolbar2QTAggals veraltet gekennzeichnet, die in Version 1.5 entfernt wird.Früher öffentliche (nicht mit Präfix versehene) Attribute
rectunddrawRectvonFigureCanvasQTAggwurden entfernt; sie waren immer eine Implementierungsdetail der (erhaltenen) FunktiondrawRectangle().Die Funktionssignaturen von
matplotlib.tight_bbox.adjust_bboxundmatplotlib.tight_bbox.process_figure_for_rasterizingwurden geändert. Ein neuer Parameter fixed_dpi ermöglicht es, die Einstellungfigure.dpizu überschreiben, anstatt zu versuchen, das beabsichtigte Verhalten aus dem Dateiformat abzuleiten.Unterstützung für horizontale/vertikale Achsenabstände wurde zu
mpl_toolkits.axes_grid1.axes_grid.ImageGridhinzugefügt --- das Argument axes_pad kann nun ein Tupel-ähnliches Objekt sein, wenn separate Achsenabstände erforderlich sind. Das ursprüngliche Verhalten bleibt erhalten.Unterstützung für schräge Transformationen wurde zu
matplotlib.transforms.Affine2Dhinzugefügt, die mithilfe der Methodenskewundskew_degerstellt werden können.Parameter
clockwisewurde hinzugefügt, um die Sektorrichtung inaxes.Axes.piezu steuern.In
matplotlib.lines.Line2Dwurde die Funktionalität markevery erweitert. Zuvor konnte ein ganzzahliger Startindex und eine Schrittweite mithilfe einer Liste mit zwei Elementen oder eines Tupels mit zwei Elementen angegeben werden. Nun kann dies nur noch mit einem Tupel mit zwei Elementen erfolgen. Wenn eine Liste mit zwei Elementen verwendet wird, wird diese als NumPy-Fancy-Indizierung behandelt und nur die beiden Marker, die den angegebenen Indizes entsprechen, werden angezeigt.Das Schlüsselwortargument prop wurde aus dem Aufruf von
mpl_toolkits.axes_grid1.anchored_artists.AnchoredSizeBarentfernt. Es wurde an die Basisklasse__init__weitergegeben und nur zum Festlegen des Abstands verwendet. Nun wird fontproperties (was tatsächlich zur Festlegung der Schriftarteigenschaften vonAnchoredSizeBarverwendet wird) anstelle von prop weitergegeben. Wenn fontproperties nicht übergeben wird, aber prop, dann wird prop anstelle von fontproperties verwendet. Wenn beides übergeben wird, wird prop stillschweigend ignoriert.Die Verwendung des Index 0 in
pyplot.subplotund verwandten Befehlen ist veraltet. Aufgrund mangelnder Validierung löst der Aufruf vonplt.subplots(2, 2, 0)keine Ausnahme aus, sondern platziert eine Achse an der _letzten_ Position. Dies liegt daran, dass die Indizierung in subplot 1-basiert ist (um MATLAB zu spiegeln), sodass vor der Indizierung in dasGridSpec-Objekt, das bestimmt, wo die Achse platziert werden soll, 1 subtrahiert wird. Die Übergabe von 0 führt dazu, dass -1 anGridSpecübergeben wird, was dazu führt, dass die letzte Position zurückgegeben wird. Obwohl dieses Verhalten eindeutig falsch und nicht beabsichtigt ist, gehen wir aus Vorsicht einen Verwendungszyklus durch, falls einige Benutzer diese "Funktion" ausnutzen. Die Verwendung von 0 als Index löst in Version 1.4 eine Warnung und in Version 1.5 eine Ausnahme aus.Clipping ist jetzt standardmäßig bei Offset-Boxen deaktiviert.
Matplotlib verwendet nun einen weniger aggressiven Aufruf von
gc.collect(1)beim Schließen von Abbildungen, um größere Verzögerungen bei einer großen Anzahl von Benutzerobjekten im Speicher zu vermeiden.Der Standard-Clippingwert von all-Pie-Künstlern ist nun standardmäßig
False.
Code-Entfernung#
mlab.levypdfwurde entfernt. Der Code löste einen NumPy-Fehler aus (und das schon seit langem) und war nicht die Standardform der Levy-Verteilung. Stattdessen solltescipy.stats.levyverwendet werden.