API-Änderungen in 1.2.x#

  • Die Option classic des rc-Parameters toolbar ist veraltet und wird in der nächsten Version entfernt.

  • Die Methode matplotlib.cbook.isvector wurde entfernt, da sie nicht mehr funktionsfähig ist.

  • Die Eigenschaft rasterization_zorder auf Axes setzt 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, muss set_rasterization_zorder explizit aufgerufen werden.

  • In scatter() und scatter wird bei der Angabe eines Markers mit einem Tupel nun der Winkel in Grad und nicht in Radiant angegeben.

  • Die Verwendung von twinx() oder twiny() ü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 Methoden set_under() und set_over() bestimmt werden, die standardmäßig die Endpunkte der Colormap verwenden.

  • Der neue rc-Parameter savefig.format ersetzt cairo.format und savefig.extension und legt das Standarddateiformat fest, das von matplotlib.figure.Figure.savefig() verwendet wird.

  • In pyplot.pie() und axes.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_factory ist nun zugunsten der Achsenklassenidentifikation mittels matplotlib.projections.process_projection_requirements gefolgt von direkter Achsenklassenaufrufung veraltet (zum Zeitpunkt der Erstellung sind Funktionen, die dies tun: add_axes(), add_subplot() und gca()). Daher

    key = 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_axes bereitstellen. Weitere Details finden Sie unter matplotlib.projections.

  • Ein neues Schlüsselwort extendfrac in colorbar() und ColorbarBase ermö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_affine und nicht die generische Methode transform überschreiben. Zuvor würden Transformationen transform definieren und dann die Methode in transform_non_affine kopieren.

    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_isdata oder y_isdata mehr; stattdessen kann die Transformation jedes Künstlers mit artist_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).

  • twinx und twiny geben 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, Colormap und Normalize sind nun Unterklassen von object

  • ContourSet-Instanzen haben kein transform-Attribut mehr. Greifen Sie stattdessen mit der Methode get_transform auf die Transformation zu.