Änderungen für 0.98.0#
matplotlib.image.imread()gibt jetzt nicht mehr immer RGBA-Daten zurück. Wenn das Bild Luminanz oder RGB ist, wird nach Möglichkeit ein MxN- oder MxNx3-Array zurückgegeben. Auch uint8 wird nicht mehr immer zu float erzwungen.Die Callback-Infrastruktur von
matplotlib.cm.ScalarMappablewurde überarbeitet, ummatplotlib.cbook.CallbackRegistryanstelle einer benutzerdefinierten Callback-Verarbeitung zu verwenden. Benutzer vonmatplotlib.cm.ScalarMappable.add_observervonScalarMappablesollten stattdessen dieCallbackRegistrymatplotlib.cm.ScalarMappable.callbacksSMverwenden.Neue Achsenfunktion und Achsenmethode bieten Kontrolle über den Farbzyklus des Plots:
matplotlib.axes.set_default_color_cycleundmatplotlib.axes.Axes.set_color_cycle.Matplotlib erfordert jetzt Python 2.4, daher wird
matplotlib.cbookkeine Kompatibilitätsfunktionen fürset,enumerate(),reversed()oderizipmehr bereitstellen.In Numpy 1.0 werden Bins nur durch die linken Ränder spezifiziert. Die Achsenmethode
matplotlib.axes.Axes.hist()verwendet jetzt zukünftige Numpy 1.3 Semantik für Histogramme. Bei Angabe vonbinedgesgibt der letzte Wert jetzt den oberen rechten Rand an, der in Numpy 1.0 implizit auf +Unendlich gesetzt wurde. Das bedeutet auch, dass der letzte Bin standardmäßig keine oberen Ausreißer mehr enthält.Neue Achsenmethode und Pyplot-Funktion,
hexbin(), ist eine Alternative zuscatter()für große Datensätze. Sie erstellt so etwas wie einpcolor()eines 2D-Histogramms, verwendet aber hexagonale Bins.Das neue Keyword-Argument
symmetricinmatplotlib.ticker.MaxNLocatorermöglicht es, zu verlangen, dass eine Achse um Null zentriert ist.Toolkits müssen jetzt von
mpl_toolkitsimportiert werden (nicht vonmatplotlib.toolkits).
Hinweise zur Transformation-Überarbeitung#
Ein wichtiges neues Feature der Serie 0.98 ist eine flexiblere und erweiterbarere Transformationsinfrastruktur, die in Python/Numpy anstelle einer benutzerdefinierten C-Erweiterung geschrieben ist.
Das Hauptziel dieser Überarbeitung war es, die Erweiterung von Matplotlib für neue Projektionstypen zu erleichtern. Dies ist hauptsächlich eine interne Verbesserung, und die möglichen sichtbaren Benutzeränderungen, die sie ermöglicht, kommen erst noch.
Siehe matplotlib.transforms für eine Beschreibung des Designs des neuen Transformations-Frameworks.
Aus Effizienzgründen geben viele dieser Funktionen Ansichten auf Numpy-Arrays zurück. Das bedeutet, dass sich ihr Inhalt ändern kann, wenn Sie eine Referenz darauf halten. Wenn Sie einen Schnappschuss ihrer aktuellen Werte speichern möchten, verwenden Sie die Array-Methode copy().
Die Ansichtsintervalle werden jetzt nur noch an einer Stelle gespeichert – in der matplotlib.axes.Axes-Instanz, nicht mehr auch in den Locator-Instanzen. Das bedeutet, dass Locatoren ihre Grenzen von ihrer matplotlib.axis.Axis abrufen müssen, die ihrerseits ihre Grenzen aus den Axes abruft. Wenn ein Locator temporär verwendet und keiner Achse oder keinen Achsen zugewiesen wird (z. B. in matplotlib.contour), muss eine Dummy-Achse erstellt werden, um seine Grenzen zu speichern. Rufen Sie matplotlib.ticker.TickHelper.create_dummy_axis() auf, um dies zu tun.
Die Funktionalität von Pbox wurde mit Bbox zusammengeführt. Seine Methoden geben jetzt alle Kopien zurück, anstatt sie inplace zu ändern.
Die folgende Liste enthält viele der einfachen Änderungen, die erforderlich sind, um Code vom alten Transformations-Framework zum neuen zu aktualisieren. Insbesondere Methoden, die eine Kopie zurückgeben, sind mit einem Verb in der Vergangenheitsform benannt, während Methoden, die ein Objekt inplace ändern, mit einem Verb in der Gegenwartsform benannt sind.
matplotlib.transforms#
Alte Methode |
Neue Methode |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
matplotlib.axes#
Alte Methode |
Neue Methode |
|---|---|
|
|
|
|
|
|
|
entfernt |
Die Polar-Klasse wurde nach matplotlib.projections.polar verschoben.
matplotlib.axes.Axes.get_position() gab früher eine Liste von Punkten zurück, jetzt gibt sie eine matplotlib.transforms.Bbox-Instanz zurück.
matplotlib.axes.Axes.set_position() akzeptiert jetzt entweder vier Skalare oder eine matplotlib.transforms.Bbox-Instanz.
Da die Überarbeitung mehr als zwei Skalentypen ('log' oder 'linear') zulässt, ergibt ein Umschalter keinen Sinn mehr. Axes.toggle_log_lineary() wurde entfernt.
matplotlib.artist#
Alte Methode |
Neue Methode |
|---|---|
|
|
matplotlib.artist.Artist.set_clip_path() akzeptiert jetzt eine matplotlib.path.Path-Instanz und eine matplotlib.transforms.Transform, die auf den Pfad angewendet wird, unmittelbar vor dem Clipping.
matplotlib.collections#
Alte Methode |
Neue Methode |
|---|---|
Linienstil (linestyle) |
linestyles [6] |
Linestyles werden jetzt wie alle anderen Sammlungattribute behandelt, d.h. es kann ein einzelner Wert oder mehrere Werte angegeben werden.
matplotlib.colors#
Alte Methode |
Neue Methode |
|---|---|
|
|
matplotlib.contour#
Alte Methode |
Neue Methode |
|---|---|
|
|
matplotlib.figure#
Alte Methode |
Neue Methode |
|---|---|
|
|
matplotlib.patches#
Alte Methode |
Neue Methode |
|---|---|
|
|
matplotlib.backend_bases#
Alte Methode |
Neue Methode |
|---|---|
|
|
|
|
|
matplotlib.backend_bases.GraphicsContextBase.get_clip_path() gibt ein Tupel der Form (path, affine_transform) zurück, wobei path eine matplotlib.path.Path-Instanz und affine_transform eine matplotlib.transforms.Affine2D-Instanz ist.
matplotlib.backend_bases.GraphicsContextBase.set_clip_path() akzeptiert jetzt nur noch eine matplotlib.transforms.TransformedPath-Instanz.
RendererBase#
Neue Methoden
Geänderte Methoden
draw_image(self, x, y, im, bbox)ist jetztdraw_image(self, x, y, im, bbox, clippath, clippath_trans)
Entfernte Methoden
draw_arcdraw_line_collectiondraw_linedraw_linesdraw_pointdraw_quad_meshdraw_poly_collectiondraw_polygondraw_rectangledraw_regpoly_collection