API-Änderungen in 2.0.0#

Veraltung und Entfernung#

Farbe von Achsen#

Die Eigenschaften axisbg und axis_bgcolor für Axes sind zugunsten von facecolor veraltet.

GTK und GDK Backends veraltet#

Die GDK- und GTK-Backends sind veraltet. Diese veralteten Backends ermöglichen das Rendern von Figuren über die GDK-API in Dateien und GTK2-Figuren. Sie sind ungetestet und bekanntermaßen fehlerhaft, und ihre Verwendung wurde schon seit einiger Zeit nicht mehr empfohlen. Verwenden Sie stattdessen die Backends GTKAgg und GTKCairo zum Rendern in GTK2-Fenster.

WX-Backend veraltet#

Das WX-Backend ist veraltet. Es ist ungetestet und seine Verwendung wurde schon seit einiger Zeit nicht mehr empfohlen. Verwenden Sie stattdessen das WXAgg-Backend zum Rendern von Figuren in WX-Fenster.

CocoaAgg-Backend entfernt#

Das veraltete und nicht voll funktionsfähige CocoaAgg-Backend wurde entfernt.

round aus TkAgg-Backend entfernt#

Das TkAgg-Backend hatte seine eigene Implementierung der Funktion round. Diese wurde intern nicht verwendet und wurde entfernt. Verwenden Sie stattdessen entweder die integrierte Funktion round oder numpy.around.

'hold'-Funktionalität veraltet#

Das Schlüsselwortargument 'hold' und alle damit verbundenen Funktionen und Methoden sind zusammen mit dem rcParams-Eintrag axes.hold veraltet. Das Verhalten bleibt konsistent mit dem Standardzustand hold=True, der seit langem besteht. Anstatt eine Funktion oder ein Schlüsselwortargument (hold=False) zu verwenden, um dieses Verhalten zu ändern, löschen Sie die Achsen oder die Figur bei Bedarf explizit vor den nachfolgenden Plotbefehlen.

Artist.update gibt einen Rückgabewert zurück#

Die Methoden matplotlib.artist.Artist.set, matplotlib.artist.Artist.update und die Funktion matplotlib.artist.setp verwenden nun einen gemeinsamen Codepfad, um nachzuschlagen, wie die gegebenen Künstlerattribute aktualisiert werden (entweder über die Setter-Methoden oder ein Attribut/eine Eigenschaft).

Das Verhalten von matplotlib.artist.Artist.update wird leicht geändert, um eine Liste der Rückgabewerte der Setter-Methoden zurückzugeben, um die API von matplotlib.artist.Artist.set und matplotlib.artist.setp nicht zu ändern.

Die an matplotlib.artist.Artist.update übergebenen Schlüssel werden nun vor der Verarbeitung in Kleinbuchstaben umgewandelt, um dem Verhalten von matplotlib.artist.Artist.set und matplotlib.artist.setp zu entsprechen. Dies sollte keinen Benutzercode brechen, da es keine Set-Methoden mit Großbuchstaben in ihren Namen gibt, aber es schränkt die Benennung von Eigenschaften für die Zukunft ein.

Legend-Initialisierer erhalten Schlüsselwortargumente edgecolor und facecolor#

Der Hintergrund-Patch (oder "Rahmen") der Legend kann seine edgecolor und facecolor durch die entsprechenden Schlüsselwortargumente für den Initialisierer Legend oder für alle Methoden oder Funktionen, die diesen Initialisierer aufrufen, bestimmen lassen. Wenn sie ihren Standardwerten von None überlassen werden, werden ihre Werte aus matplotlib.rcParams übernommen. Das zuvor vorhandene framealpha-Argument steuert weiterhin die Alpha-Transparenz des Patches.

Qualitative Colormaps#

Die qualitativen/diskreten Colormaps von Colorbrewer ("Accent", "Dark2", "Paired", "Pastel1", "Pastel2", "Set1", "Set2", "Set3") werden jetzt als ListedColormap anstelle von LinearSegmentedColormap implementiert.

Um diese beispielsweise für Bilder zu verwenden, bei denen Kategorien als Ganzzahlen angegeben sind, verwenden Sie

plt.imshow(x, cmap='Dark2', norm=colors.NoNorm())

Änderung in der draw_image Backend-API#

Die von Backends implementierte Methode draw_image hat ihre Schnittstelle geändert.

Diese Änderung ist nur relevant, wenn das Backend deklariert, dass es Bilder transformieren kann, indem es True von option_scale_image zurückgibt. Weitere Informationen finden Sie in der Dokumentation von draw_image.

Update des Algorithmus von matplotlib.ticker.LinearLocator#

Der matplotlib.ticker.LinearLocator wird verwendet, um den Bereich und die Position von Achsen-Ticks zu definieren, wenn der Benutzer eine genaue Anzahl von Ticks wünscht. LinearLocator unterscheidet sich somit vom Standard-Locator MaxNLocator, bei dem der Benutzer eine maximale Anzahl von Intervallen anstelle einer genauen Anzahl von Ticks angibt.

Der Algorithmus für den Sichtbereich in matplotlib.ticker.LinearLocator wurde geändert, damit bequemere Tick-Positionen gewählt werden. Der neue Algorithmus gibt einen Plot-Sichtbereich zurück, der ein Vielfaches der vom Benutzer angeforderten Anzahl von Ticks ist. Dies stellt sicher, dass Tick-Markierungen konsistenter bei ganzen Zahlen liegen. Zum Beispiel, wenn beide y-Achsen eines``twinx``-Plots matplotlib.ticker.LinearLocator mit der gleichen Anzahl von Ticks verwenden, werden ihre y-Tick-Positionen und Gitterlinien zusammenfallen.

matplotlib.ticker.LogLocator erhält das `numticks`-Argument#

Die maximale Anzahl von Ticks, die von LogLocator generiert wird, kann nun explizit gesteuert werden, indem das neue `numticks`-Argument auf einen Integer gesetzt wird. Standardmäßig ist das Argument None, was intern auf den String 'auto' gesetzt wird. Dies löst einen neuen Algorithmus aus, um das Maximum entsprechend der Achsenlänge im Verhältnis zur Tick-Label-Schriftgröße anzupassen.

matplotlib.ticker.LogFormatter: zwei neue Argumente#

Zuvor wurden Neben-Ticks auf logarithmischen Achsen standardmäßig nicht beschriftet. Ein Algorithmus wurde zu LogFormatter hinzugefügt, um die Beschriftung von Ticks zwischen ganzen Potenzen der Basis zu steuern. Der Algorithmus verwendet zwei Parameter, die in einem Argument-Tupel namens 'minor_thresholds' übergeben werden. Weitere Erklärungen finden Sie in der Dokumentation.

Zur Verbesserung der Unterstützung für Achsen, die SymmetricalLogLocator verwenden, wurde ein linthresh-Schlüsselwortargument hinzugefügt.

Neue Standardwerte für die 3D-Quiver-Funktion in mpl_toolkits.mplot3d.axes3d.py#

Matplotlib hat sowohl eine 2D- als auch eine 3D-quiver-Funktion. Diese Änderungen betreffen nur die 3D-Funktion und passen das Standardverhalten der 3D-Funktion an die 2D-Version an. Es gibt zwei Änderungen:

  1. Die 3D-Quiver-Funktion normalisierte zuvor die Pfeile auf die gleiche Länge, was sie für Situationen unbrauchbar machte, in denen die Pfeile unterschiedliche Längen haben sollten, und nicht dem Verhalten der 2D-Funktion entsprach. Dieses Normalisierungsverhalten wird nun mit dem Schlüsselwort normalize gesteuert, das standardmäßig auf False gesetzt ist.

  2. Das Schlüsselwort pivot ist nun standardmäßig auf tail anstelle von tip gesetzt. Dies geschah, um das Standardverhalten der 2D-Quiver-Funktion anzupassen.

Um das frühere Verhalten mit der 3D-Quiver-Funktion zu erzielen, kann die Funktion aufgerufen werden mit

ax.quiver(x, y, z, u, v, w, normalize=True, pivot='tip')

wobei "ax" ein Axes3d-Objekt ist, das mit etwas wie erstellt wurde

import mpl_toolkits.mplot3d.axes3d
ax = plt.subplot(111, projection='3d')

Stale-Figuren-Verhalten#

Der Versuch, die Figur zu zeichnen, wird sie nun als nicht-stale markieren (unabhängig davon, ob das Zeichnen erfolgreich ist). Diese Änderung dient dazu, wiederholte Versuche, eine Figur neu zu zeichnen, die beim Zeichnen einen Fehler verursacht, zu verhindern. Das frühere Verhalten hätte eine Figur erst dann als nicht-stale markiert, wenn ein vollständiges Neuzeichnen erfolgreich war.

Die spektrale Colormap ist jetzt nipy_spectral#

Die Colormaps, die früher als spectral und spectral_r bekannt waren, wurden seit Matplotlib 1.3.0 durch nipy_spectral und nipy_spectral_r ersetzt. Obwohl die Colormap in Matplotlib 1.3.0 als veraltet markiert wurde, wurde nie eine Warnung ausgelöst. Ab Matplotlib 2.0.0 löst die Verwendung der alten Namen eine Verwarnung aus. In Zukunft wird die Verwendung der alten Namen einen Fehler auslösen.

Standardinstallation enthält keine Testbilder mehr#

Um die Größe von Wheels und Quellinstallationen zu reduzieren, sind die Tests und Basisbilder nicht mehr standardmäßig enthalten.

Um die Installation von Tests und Bildern wiederherzustellen, verwenden Sie eine setup.cfg mit

[packages]
tests = True
toolkits_tests = True

im Quellverzeichnis während des Build-/Installationsvorgangs.