API-Änderungen in 1.2.x#
Die Option
classicdes rc-Parameterstoolbarist veraltet und wird in der nächsten Version entfernt.Die Methode
matplotlib.cbook.isvectorwurde entfernt, da sie nicht mehr funktionsfähig ist.Die Eigenschaft
rasterization_zorderaufAxessetzt eine Z-Reihenfolge, unterhalb derer Künstler rasterisiert werden. Dies hatte standardmäßig -30000.0, aber jetzt ist der Standardwert *None*, was bedeutet, dass keine Künstler rasterisiert werden. Um Künstler unterhalb eines bestimmten Z-Reihenfolgewerts zu rasterisieren, mussset_rasterization_zorderexplizit aufgerufen werden.In
scatter()undscatterwird bei der Angabe eines Markers mit einem Tupel nun der Winkel in Grad und nicht in Radiant angegeben.Die Verwendung von
twinx()odertwiny()überschreibt nicht mehr die aktuellen Locators und Formatierer auf den Achsen.In
contourf()hat sich die Handhabung des Schlüsselwortarguments extend geändert. Früher wurden die erweiterten Bereiche nach der Normierung auf 0, 1 abgebildet, sodass sie immer den Extremwerten der Colormap entsprachen. Nun werden sie außerhalb dieses Bereichs abgebildet, sodass sie den speziellen Colormap-Werten entsprechen, die durch die Methodenset_under()undset_over()bestimmt werden, die standardmäßig die Endpunkte der Colormap verwenden.Der neue rc-Parameter
savefig.formatersetztcairo.formatundsavefig.extensionund legt das Standarddateiformat fest, das vonmatplotlib.figure.Figure.savefig()verwendet wird.In
pyplot.pie()undaxes.Axes.pie()kann nun der Radius des Kreises eingestellt werden; das Einstellen von radius auf 'None' (der Standardwert) führt wie bisher zu einem Kreis mit Radius 1.Die Verwendung von
matplotlib.projections.projection_factoryist nun zugunsten der Achsenklassenidentifikation mittelsmatplotlib.projections.process_projection_requirementsgefolgt von direkter Achsenklassenaufrufung veraltet (zum Zeitpunkt der Erstellung sind Funktionen, die dies tun:add_axes(),add_subplot()undgca()). Daherkey = figure._make_key(*args, **kwargs) ispolar = kwargs.pop('polar', False) projection = kwargs.pop('projection', None) if ispolar: if projection is not None and projection != 'polar': raise ValueError('polar and projection args are inconsistent') projection = 'polar' ax = projection_factory(projection, self, rect, **kwargs) key = self._make_key(*args, **kwargs) # is now projection_class, kwargs, key = \ process_projection_requirements(self, *args, **kwargs) ax = projection_class(self, rect, **kwargs)
Diese Änderung bedeutet, dass Drittanbieterobjekte sich als Matplotlib-Achsen exponieren können, indem sie eine Methode
_as_mpl_axesbereitstellen. Weitere Details finden Sie untermatplotlib.projections.Ein neues Schlüsselwort extendfrac in
colorbar()undColorbarBaseermöglicht die Steuerung der Größe der dreieckigen Minimal- und Maximalerweiterungen auf Farbleisten.Ein neues Schlüsselwort capthick in
errorbar()wurde als intuitiver Alias für die Schlüsselwortargumente markeredgewidth und mew hinzugefügt, die indirekt die Dicke der Kappen bei den Fehlerbalken steuerten. Aus Kompatibilitätsgründen überschreibt die Angabe eines der ursprünglichen Schlüsselwortargumente jeden Wert, der von capthick bereitgestellt wird.Das Verhalten der Transform-Unterklasse ist nun subtil geändert. Wenn Ihre Transformation eine nicht-affine Transformation implementiert, sollten Sie die Methode
transform_non_affineund nicht die generische Methodetransformüberschreiben. Zuvor würden Transformationentransformdefinieren und dann die Methode intransform_non_affinekopieren.class MyTransform(mtrans.Transform): def transform(self, xy): ... transform_non_affine = transform
Dieser Ansatz wird nicht mehr korrekt funktionieren und sollte geändert werden zu
class MyTransform(mtrans.Transform): def transform_non_affine(self, xy): ...
Künstler haben keine Attribute
x_isdataodery_isdatamehr; stattdessen kann die Transformation jedes Künstlers mitartist_instance.get_transform().contains_branch(ax.transData)abgefragt werden.Zu einer Achse hinzugefügte Linien berücksichtigen nun ihre Transformation bei der Aktualisierung der Daten- und Ansichtsgrenzen. Dies bedeutet, dass Transformationen nun als Vortransformation verwendet werden können. Zum Beispiel
>>> import matplotlib.pyplot as plt >>> import matplotlib.transforms as mtrans >>> ax = plt.axes() >>> ax.plot(range(10), transform=mtrans.Affine2D().scale(10) + ax.transData) >>> print(ax.viewLim) Bbox('array([[ 0., 0.],\n [ 90., 90.]])')
Man kann nun einfach eine Transformation erhalten, die von einem Koordinatensystem in ein anderes transformiert, und das auf optimierte Weise, indem man die neue subtrahiere Methode einer Transformation verwendet. Zum Beispiel, um von Datenkoordinaten zu Achsenkoordinaten zu gelangen
>>> import matplotlib.pyplot as plt >>> ax = plt.axes() >>> data2ax = ax.transData - ax.transAxes >>> print(ax.transData.depth, ax.transAxes.depth) 3, 1 >>> print(data2ax.depth) 2
Für Versionen vor 1.2 konnte dies nur suboptimal erreicht werden, indem
ax.transData + ax.transAxes.inverted()verwendet wurde (Tiefe ist ein neues Konzept, aber wenn es existiert hätte, würde es in diesem Beispiel 4 zurückgeben).twinxundtwinygeben nun eine Instanz von SubplotBase zurück, wenn die übergeordnete Achse eine Instanz von SubplotBase ist.Alle Qt3-basierten Backends sind aufgrund fehlender py3k-Bindings veraltet. Qt- und QtAgg-Backends funktionieren weiterhin in v1.2.x für py2.6 und py2.7. Es wird erwartet, dass die Qt3-Unterstützung in der nächsten Version vollständig entfernt wird.
matplotlib.colors.ColorConverter,ColormapundNormalizesind nun Unterklassen vonobjectContourSet-Instanzen haben kein
transform-Attribut mehr. Greifen Sie stattdessen mit der Methodeget_transformauf die Transformation zu.