Ä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.ScalarMappable wurde überarbeitet, um matplotlib.cbook.CallbackRegistry anstelle einer benutzerdefinierten Callback-Verarbeitung zu verwenden. Benutzer von matplotlib.cm.ScalarMappable.add_observer von ScalarMappable sollten stattdessen die CallbackRegistry matplotlib.cm.ScalarMappable.callbacksSM verwenden.

  • Neue Achsenfunktion und Achsenmethode bieten Kontrolle über den Farbzyklus des Plots: matplotlib.axes.set_default_color_cycle und matplotlib.axes.Axes.set_color_cycle.

  • Matplotlib erfordert jetzt Python 2.4, daher wird matplotlib.cbook keine Kompatibilitätsfunktionen für set, enumerate(), reversed() oder izip mehr 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 von binedges gibt 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 zu scatter() für große Datensätze. Sie erstellt so etwas wie ein pcolor() eines 2D-Histogramms, verwendet aber hexagonale Bins.

  • Das neue Keyword-Argument symmetric in matplotlib.ticker.MaxNLocator ermöglicht es, zu verlangen, dass eine Achse um Null zentriert ist.

  • Toolkits müssen jetzt von mpl_toolkits importiert werden (nicht von matplotlib.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

Bbox.get_bounds

transforms.Bbox.bounds

Bbox.width

transforms.Bbox.width

Bbox.height

transforms.Bbox.height

Bbox.intervalx().get_bounds() Bbox.intervalx().set_bounds()

transforms.Bbox.intervalx [Es ist jetzt eine Eigenschaft.]

Bbox.intervaly().get_bounds() Bbox.intervaly().set_bounds()

transforms.Bbox.intervaly [Es ist jetzt eine Eigenschaft.]

Bbox.xmin

transforms.Bbox.x0 oder transforms.Bbox.xmin [1]

Bbox.ymin

transforms.Bbox.y0 oder transforms.Bbox.ymin [1]

Bbox.xmax

transforms.Bbox.x1 oder transforms.Bbox.xmax [1]

Bbox.ymax

transforms.Bbox.y1 oder transforms.Bbox.ymax [1]

Bbox.overlaps(bboxes)

Bbox.count_overlaps(bboxes)

bbox_all(bboxes)

Bbox.union(bboxes) [Es ist eine statische Methode.]

lbwh_to_bbox(l, b, w, h)

Bbox.from_bounds(x0, y0, w, h) [Es ist eine statische Methode.]

inverse_transform_bbox(trans, bbox)

bbox.inverse_transformed(trans)

Interval.contains_open(v)

interval_contains_open(tuple, v)

Interval.contains(v)

interval_contains(tuple, v)

identity_transform()

transforms.IdentityTransform

blend_xy_sep_transform(xtrans, ytrans)

blended_transform_factory(xtrans, ytrans)

scale_transform(xs, ys)

Affine2D().scale(xs[, ys])

get_bbox_transform(boxin, boxout)

BboxTransform(boxin, boxout) oder BboxTransformFrom(boxin) oder BboxTransformTo(boxout)

Transform.seq_xy_tup(points)

Transform.transform(points)

Transform.inverse_xy_tup(points)

Transform.inverted().transform(points)

matplotlib.axes#

Alte Methode

Neue Methode

Axes.get_position()

matplotlib.axes.Axes.get_position() [2]

Axes.set_position()

matplotlib.axes.Axes.set_position() [3]

Axes.toggle_log_lineary()

matplotlib.axes.Axes.set_yscale() [4]

Subplot-Klasse

entfernt

Die Polar-Klasse wurde nach matplotlib.projections.polar verschoben.

matplotlib.artist#

Alte Methode

Neue Methode

Artist.set_clip_path(path)

Artist.set_clip_path(path, transform) [5]

matplotlib.collections#

Alte Methode

Neue Methode

Linienstil (linestyle)

linestyles [6]

matplotlib.colors#

Alte Methode

Neue Methode

ColorConvertor.to_rgba_list(c)

colors.to_rgba_array(c) [matplotlib.colors.to_rgba_array() gibt ein Nx4-NumPy-Array von RGBA-Farbfadruppeln zurück.]

matplotlib.contour#

Alte Methode

Neue Methode

Contour._segments

matplotlib.contour.Contour.get_paths [Gibt eine Liste von matplotlib.path.Path-Instanzen zurück.]

matplotlib.figure#

Alte Methode

Neue Methode

Figure.dpi.get() Figure.dpi.set()

matplotlib.figure.Figure.dpi (eine Eigenschaft)

matplotlib.patches#

Alte Methode

Neue Methode

Patch.get_verts()

matplotlib.patches.Patch.get_path() [Gibt eine matplotlib.path.Path-Instanz zurück]

matplotlib.backend_bases#

Alte Methode

Neue Methode

GraphicsContext.set_clip_rectangle(tuple)

GraphicsContext.set_clip_rectangle(bbox)

GraphicsContext.get_clip_path()

GraphicsContext.get_clip_path() [7]

GraphicsContext.set_clip_path()

GraphicsContext.set_clip_path() [8]

RendererBase#

Neue Methoden

Geänderte Methoden

Entfernte Methoden

  • draw_arc

  • draw_line_collection

  • draw_line

  • draw_lines

  • draw_point

  • draw_quad_mesh

  • draw_poly_collection

  • draw_polygon

  • draw_rectangle

  • draw_regpoly_collection