Neues in Matplotlib 3.4.0 (26. März 2021)#
Eine Liste aller Probleme und Pull-Anfragen seit der letzten Überarbeitung finden Sie in den GitHub-Statistiken für 3.10.3 (08. Mai 2025).
Figuren- und Achsenerstellung/-verwaltung#
Neue Subfigure-Funktionalität#
Neue Funktionalitäten figure.Figure.add_subfigure und figure.Figure.subfigures ermöglichen die Erstellung virtueller Figuren innerhalb von Figuren. Ähnliche Verschachtelung wurde bisher mit verschachtelten gridspecs durchgeführt (siehe Verschachtelte Gridspecs). Dies erlaubte jedoch keine lokalisierten Figure-Künstler (z.B. eine Colorbar oder einen Suptitle), die nur zu jedem Subgridspec gehörten.
Die neuen Methoden figure.Figure.add_subfigure und figure.Figure.subfigures sollen mit figure.Figure.add_subplot und figure.Figure.subplots reimen und haben die meisten der gleichen Argumente.
Weitere Details finden Sie unter Figure Subfigures.
Hinweis
Die Subfigure-Funktionalität ist ab Version 3.4 als experimentelle API gekennzeichnet.
Single-Line-String-Notation für subplot_mosaic#
Figure.subplot_mosaic und pyplot.subplot_mosaic akzeptieren jetzt einen Single-Line-String, der Zeilen mit Semikolons abgrenzt. Nämlich,
plt.subplot_mosaic(
"""
AB
CC
""")
kann als kürzere Variante geschrieben werden
plt.subplot_mosaic("AB;CC")
Änderungen am Verhalten von Achsenerstellungsmethoden (gca, add_axes, add_subplot)#
Das Verhalten der Funktionen zur Erstellung neuer Achsen (pyplot.axes, pyplot.subplot, figure.Figure.add_axes, figure.Figure.add_subplot) hat sich geändert. In der Vergangenheit erkannten diese Funktionen, ob Sie versuchten, Achsen mit denselben Schlüsselwortargumenten wie bereits vorhandene Achsen in der aktuellen Figur zu erstellen, und gaben in diesem Fall die vorhandenen Achsen zurück. Jetzt erstellen pyplot.axes, figure.Figure.add_axes und figure.Figure.add_subplot immer neue Achsen. pyplot.subplot wird weiterhin eine vorhandene Achse mit einem übereinstimmenden Subplot-Spec und gleichen kwargs wiederverwenden.
Entsprechend hat sich das Verhalten der Funktionen zum Abrufen der aktuellen Achsen (pyplot.gca, figure.Figure.gca) geändert. In der Vergangenheit akzeptierten diese Funktionen Schlüsselwortargumente. Wenn die Schlüsselwortargumente mit bereits vorhandenen Achsen übereinstimmten, wurden diese Achsen zurückgegeben, andernfalls wurden neue Achsen mit diesen Schlüsselwortargumenten erstellt. Nun werden die Schlüsselwortargumente nur berücksichtigt, wenn überhaupt keine Achsen in der aktuellen Figur vorhanden sind. In einer zukünftigen Version werden diese Funktionen keine Schlüsselwortargumente mehr akzeptieren.
add_subplot/add_axes haben einen axes_class Parameter erhalten#
Insbesondere können mpl_toolkits Achsen-Unterklassen jetzt idiomatisch verwendet werden, z.B. mit fig.add_subplot(axes_class=mpl_toolkits.axislines.Axes)
Subplot und subplot2grid können jetzt mit Constrained Layout arbeiten#
constrained_layout basiert auf einem einzigen GridSpec für jedes logische Layout auf einer Figur. Zuvor fügten pyplot.subplot und pyplot.subplot2grid jedes Mal einen neuen GridSpec hinzu, wenn sie aufgerufen wurden, und waren daher mit constrained_layout inkompatibel.
Jetzt versucht subplot, den GridSpec wiederzuverwenden, wenn die Anzahl der Zeilen und Spalten mit dem obersten GridSpec in der Figur übereinstimmt, d.h. plt.subplot(2, 1, 2) verwendet denselben GridSpec wie plt.subplot(2, 1, 1) und die Option constrained_layout=True für Figure funktioniert.
Im Gegensatz dazu funktioniert das Mischen von nrows und ncols *nicht* mit constrained_layout: plt.subplot(2, 2, 1) gefolgt von plt.subplots(2, 1, 2) erzeugt immer noch zwei GridSpecs, und constrained_layout=True liefert schlechte Ergebnisse. Um den gewünschten Effekt zu erzielen, kann der zweite Aufruf die Zellen angeben, die die zweite Achse abdecken soll: plt.subplots(2, 2, (2, 4)), oder die Python-freundlichere Variante plt.subplot2grid((2, 2), (0, 1), rowspan=2) kann verwendet werden.
Plotting-Methoden#
axline unterstützt transform Parameter#
axline unterstützt jetzt den transform Parameter, der auf die Punkte xy1 und xy2 angewendet wird. Die slope (falls angegeben) befindet sich immer in Datenkoordinaten.
Dies kann beispielsweise mit ax.transAxes zum Zeichnen von Linien mit einer festen Steigung verwendet werden. Im folgenden Diagramm erscheint die Linie durch denselben Punkt in beiden Achsen, obwohl sie unterschiedliche Datenlimits anzeigen.
fig, axs = plt.subplots(1, 2)
for i, ax in enumerate(axs):
ax.axline((0.25, 0), slope=2, transform=ax.transAxes)
ax.set(xlim=(i, i+5), ylim=(i, i+5))
Neue automatische Beschriftung für Balkendiagramme#
Eine neue Methode Axes.bar_label wurde für die automatische Beschriftung von Balkendiagrammen hinzugefügt.
Beispiel für die neue automatische Beschriftung.#
Eine Liste von Schraffuren kann für bar und barh angegeben werden#
Ähnlich wie bei einigen anderen Rechteckeigenschaften ist es jetzt möglich, eine Liste von Schraffurstilen an bar und barh zu übergeben, um Balken mit unterschiedlichen Schraffurstilen zu erstellen, z.B.
Festlegen der Ausrichtung von BarContainer#
BarContainer akzeptiert jetzt ein neues String-Argument orientation. Es kann entweder 'vertical' oder 'horizontal' sein, Standard ist None.
Konturdiagramme verwenden jetzt standardmäßig ScalarFormatter#
Übergeben Sie fmt="%1.3f" an den Konturanruf, um das alte Standard-Labelformat wiederherzustellen.
Axes.errorbar durchläuft nicht-farbige Eigenschaften korrekt#
Früher übersprang Axes.errorbar fälschlicherweise den Achsen-Eigenschaftszyklus, wenn eine Farbe explizit angegeben wurde, auch wenn der Eigenschaftszyklus für andere Eigenschaften (wie Linienstil) galt. Jetzt wird Axes.errorbar den Achsen-Eigenschaftszyklus wie für Axes.plot vorgerückt, d.h. solange nicht alle Eigenschaften im Zyklus explizit übergeben werden.
Zum Beispiel wird der folgende Code durch die Linienstile zyklisch durchlaufen
x = np.arange(0.1, 4, 0.5)
y = np.exp(-x)
offsets = [0, 1]
plt.rcParams['axes.prop_cycle'] = plt.cycler('linestyle', ['-', '--'])
fig, ax = plt.subplots()
for offset in offsets:
ax.errorbar(x, y + offset, xerr=0.1, yerr=0.3, fmt='tab:blue')
errorbar errorevery Parameter stimmt mit markevery überein#
Ähnlich wie beim markevery Parameter für plot kann der errorevery Parameter von errorbar jetzt Slices und NumPy Fancy-Indizes (die mit der Größe von x übereinstimmen müssen) akzeptieren.
hexbin unterstützt Datenreferenz für den C Parameter#
Wie bei den Parametern x und y unterstützt Axes.hexbin jetzt die Übergabe des C Parameters mithilfe einer Datenreferenz.
data = {
'a': np.random.rand(1000),
'b': np.random.rand(1000),
'c': np.random.rand(1000),
}
fig, ax = plt.subplots()
ax.hexbin('a', 'b', C='c', data=data, gridsize=10)
Unterstützung für aufrufbare Funktionen zur Formatierung von Sankey-Labels#
Der Parameter format von matplotlib.sankey.Sankey kann jetzt aufrufbare Funktionen akzeptieren.
Dies ermöglicht die Verwendung einer beliebigen Funktion zum Beschriften von Flüssen, beispielsweise die Zuordnung von Zahlen zu Emojis.
Zugriffskürzel für Axes.spines#
Axes.spines ist jetzt eine dedizierte Container-Klasse Spines für eine Menge von Spines anstelle eines OrderedDict. Zusätzlich zum dict-ähnlichen Zugriff unterstützt Axes.spines jetzt auch einige pandas.Series-ähnliche Funktionen.
Zugriff auf einzelne Elemente per Element oder per Attribut
ax.spines['top'].set_visible(False)
ax.spines.top.set_visible(False)
Zugriff auf eine Teilmenge von Elementen
ax.spines[['top', 'right']].set_visible(False)
Gleichzeitiger Zugriff auf alle Elemente
ax.spines[:].set_visible(False)
Neue stairs Methode und StepPatch Artist#
pyplot.stairs und der zugrundeliegende Artist StepPatch bieten eine sauberere Schnittstelle für das Plotten von stufenweise konstanten Funktionen für den häufigen Fall, dass die Stufengrenzen bekannt sind. Dies ersetzt viele Anwendungsfälle von pyplot.step, z.B. beim Plotten der Ausgabe von numpy.histogram.
Sowohl für den Artist als auch für die Funktion ist die x-ähnliche Kanten-Eingabe um ein Element länger als die y-ähnliche Werte-Eingabe
Beispiele finden Sie unter Stairs Demo.
Parameter orientation für Stem-Plots hinzugefügt#
Standardmäßig sind Stem-Linien vertikal. Sie können mit dem Parameter orientation von Axes.stem oder pyplot.stem auf horizontal umgeschaltet werden.
Winkel bei Bracket-Pfeilstilen#
Bei den Bracket-Pfeilstilen (]-[, ]-, -[ oder |-|, die an den arrowstyle Parameter von FancyArrowPatch übergeben werden) angegebene Winkel werden jetzt angewendet. Zuvor waren die Optionen angleA und angleB erlaubt, hatten aber keine Wirkung.
TickedStroke Patheffect#
Der neue TickedStroke Patheffect kann verwendet werden, um Linien im gestrichelten Stil zu erzeugen. Dies kann beispielsweise verwendet werden, um die gültigen und ungültigen Seiten von Einschränkungsgrenzen im Lösungsraum von Optimierungen zu unterscheiden.
Farben und Colormaps#
Farbspezifikation und -abbildung für Collections#
Die Überarbeitung der Handhabung von Farbabildungen und der Schlüsselwortargumente für facecolor und edgecolor hat zu drei Verhaltensänderungen geführt
Die Farbabildung kann durch Aufruf von
Collection.set_array(None)ausgeschaltet werden. Zuvor hatte dies keine Auswirkungen.Wenn ein mappbares Array gesetzt ist, mit
facecolor='none'undedgecolor='face', bleiben sowohl die Flächen als auch die Kanten ungefärbt. Zuvor wurden die Kanten farbabgebildet.Wenn ein mappbares Array gesetzt ist, mit
facecolor='none'undedgecolor='red', sind die Kanten rot. Dies behebt Issue #1302. Zuvor wurden die Kanten farbabgebildet.
Transparenz (Alpha) kann als Array in Collections festgelegt werden#
Zuvor konnte der Alpha-Wert, der die Transparenz in Collections steuert, nur als Skalar angegeben werden, der auf alle Elemente in der Collection angewendet wurde. Zum Beispiel hätten alle Marker in einem scatter-Plot oder alle Vierecke in einem pcolormesh-Plot denselben Alpha-Wert.
Jetzt ist es möglich, Alpha als Array mit einem Wert für jedes Element (Marker, Viereck usw.) in einer Collection anzugeben.
pcolormesh hat eine verbesserte Transparenzbehandlung durch Aktivieren des Snappings#
Aufgrund der Art und Weise, wie das Schlüsselwortargument `snapping` an das Agg-Backend übergeben wurde, zeigten frühere Versionen von Matplotlib Linien zwischen den Gitterkanten eines Meshes mit Transparenz an. Diese Version wendet nun standardmäßig das Snapping an. Um das alte Verhalten wiederherzustellen (z. B. für Testbilder), können Sie rcParams["pcolormesh.snap"] (Standard: True) auf False setzen.
Beachten Sie, dass es Linien zwischen den Gittergrenzen der Hauptachse gibt, die nicht die gleiche Transparenz aufweisen. Die Farbleiste zeigt ebenfalls diese Linien an, wenn der Colormap eine Transparenz hinzugefügt wird, da sie intern `pcolormesh` zum Zeichnen der Farbleiste verwendet. Mit standardmäßig aktiviertem Snapping (siehe unten) verschwinden die Linien an den Gittergrenzen.
IPython-Darstellungen für Colormap-Objekte#
Das Objekt matplotlib.colors.Colormap verfügt nun über Bilddarstellungen für IPython / Jupyter-Backends. Zellen, die eine Colormap als letzte Zeile zurückgeben, zeigen ein Bild der Colormap an.
In[1]: cmap = plt.get_cmap('viridis').with_extremes(bad='r', under='g', over='b')
In[2]: cmap
Out[2]:
Colormap.set_extremes und Colormap.with_extremes#
Da die Methoden Colormap.set_bad, Colormap.set_under und Colormap.set_over die Colormap direkt modifizieren, muss der Benutzer vorsichtig sein und zuerst eine Kopie der Colormap erstellen, wenn die Extremfarben gesetzt werden, z. B. für eine vordefinierte Colormap.
Die neue Methode Colormap.with_extremes(bad=..., under=..., over=...) kann verwendet werden, um zuerst die Colormap zu kopieren und die Extremfarben auf dieser Kopie zu setzen.
Die neue Methode Colormap.set_extremes wird zur API-Symmetrie mit Colormap.with_extremes bereitgestellt, aber beachten Sie, dass sie das gleiche Problem wie die früheren individuellen Setter aufweist.
Unter-/Über-/Schlecht-Farben von Colormap-Objekten abrufen#
matplotlib.colors.Colormap verfügt nun über die Methoden get_under, get_over und get_bad für die Farben, die für Werte außerhalb des Bereichs und maskierte Werte verwendet werden.
Neue Funktion cm.unregister_cmap#
matplotlib.cm.unregister_cmap ermöglicht es Benutzern, eine zuvor registrierte Colormap zu entfernen.
Neue CenteredNorm für symmetrische Daten um einen Mittelpunkt#
In Fällen, in denen Daten um einen Mittelpunkt symmetrisch sind, z. B. positive und negative Anomalien um einen Nullpunkt, ist CenteredNorm eine neue Norm, die automatisch eine symmetrische Abbildung um den Mittelpunkt erstellt. Diese Norm eignet sich gut für die Kombination mit einer divergenten Colormap, die in ihrem Zentrum eine ungesättigte Farbe verwendet.
Wenn der Symmetriepunkt von 0 abweicht, kann er mit dem Argument `vcenter` gesetzt werden. Um den Bereich von CenteredNorm manuell festzulegen, verwenden Sie das Argument `halfrange`.
Siehe Colormap-Normalisierung für ein Beispiel und weitere Details zur Daten-Normalisierung.
Neue FuncNorm für beliebige Normalisierungen#
Die FuncNorm ermöglicht eine beliebige Normalisierung mithilfe von Funktionen für die Vorwärts- und Rückwärtsrichtung.
Siehe Colormap-Normalisierung für ein Beispiel und weitere Details zur Daten-Normalisierung.
GridSpec-basierte Farbleisten können jetzt oberhalb oder links von der Hauptachse positioniert werden#
... durch Übergabe von location="top" oder location="left" an den Aufruf von colorbar().
Titel, Ticks und Beschriftungen#
supxlabel und supylabel#
Es ist möglich, x- und y-Beschriftungen für eine ganze Abbildung hinzuzufügen, analog zu Figure.suptitle unter Verwendung der neuen Methoden Figure.supxlabel und Figure.supylabel.
Ein iterierbares Objekt mit Beschriftungen kann an Axes.plot übergeben werden#
Beim Plotten mehrerer Datensätze durch Übergabe von 2D-Daten als `y`-Wert an `plot` können Beschriftungen für die Datensätze als Liste übergeben werden, deren Länge der Anzahl der Spalten in `y` entspricht.
x = [1, 2, 3]
y = [[1, 2],
[2, 5],
[4, 9]]
plt.plot(x, y, label=['low', 'high'])
plt.legend()
Schriftarten und Text#
Texttransformation kann die Textrichtung drehen#
Der neue Parameter transform_rotates_text von Text legt nun fest, ob Drehungen der Transformation die Textrichtung beeinflussen.
Beispiel für den neuen Parameter transform_rotates_text#
matplotlib.mathtext unterstützt jetzt die LaTeX-Symbole overset und underset#
mathtext unterstützt nun `overset` und `underset`, die als \overset{annotation}{body} oder \underset{annotation}{body} aufgerufen werden, wobei `annotation` der Text "über" oder "unter" dem `body` ist.
Parameter math_fontfamily zum Ändern der Text-Schriftfamilie#
Der neue Parameter `math_fontfamily` kann verwendet werden, um die Schriftfamilie für jedes einzelne Textelement in einem Plot zu ändern. Wenn kein Parameter gesetzt ist, wird der globale Wert rcParams["mathtext.fontset"] (Standard: 'dejavusans') verwendet.
TextArea/AnchoredText unterstützt horizontalalignment#
Die horizontale Ausrichtung von Text in einem TextArea oder AnchoredText kann nun angegeben werden, was hauptsächlich für mehrzeiligen Text wirksam ist.
PDF unterstützt URLs auf Text-Künstlern#
URLs auf text.Text-Künstlern (d. h. von Artist.set_url) werden nun in PDF-Dateien gespeichert.
Verbesserungen bei `rcParams`#
Neue `rcParams` für Daten: Konverter und ob `interval_multiples` verwendet werden soll#
Das neue rcParams["date.converter"] (Standard: 'auto') ermöglicht das Umschalten zwischen matplotlib.dates.DateConverter und matplotlib.dates.ConciseDateConverter unter Verwendung der Zeichenfolgen 'auto' bzw. 'concise'.
Das neue rcParams["date.interval_multiples"] (Standard: True) ermöglicht das Umschalten zwischen dem Versuch des Datums-Locators, Ticks bei festgelegten Intervallen zu setzen (d. h. Tag 1 und 15 des Monats) und gleichmäßig verteilten Ticks, die dort beginnen, wo die Zeitreihe beginnt.
dates = np.arange('2001-01-10', '2001-05-23', dtype='datetime64[D]')
y = np.sin(dates.astype(float) / 10)
fig, axs = plt.subplots(nrows=2, constrained_layout=True)
plt.rcParams['date.converter'] = 'concise'
plt.rcParams['date.interval_multiples'] = True
axs[0].plot(dates, y)
plt.rcParams['date.converter'] = 'auto'
plt.rcParams['date.interval_multiples'] = False
axs[1].plot(dates, y)
Datumsformatierer respektieren jetzt den `usetex`-rcParams#
Die Klassen AutoDateFormatter und ConciseDateFormatter respektieren nun rcParams["text.usetex"] (Standard: False) und verwenden daher Schriftarten, die konsistent mit der TeX-Darstellung des Standard- (nicht-Datums-) Formatierers sind. Die TeX-Darstellung kann auch durch Übergabe des Arguments `usetex` beim Erstellen der Formatierer-Instanz aktiviert/deaktiviert werden.
In der folgenden Abbildung verwenden sowohl die x-Achse (Daten) als auch die y-Achse (Zahlen) jetzt die gleiche (TeX-)Schriftart
Setzen von `image.cmap` auf eine Colormap#
Es ist nun möglich, rcParams["image.cmap"] (Standard: 'viridis') auf eine Colormap-Instanz zu setzen, wie z. B. eine mit der neuen Methode set_extremes oben erstellte Colormap. (Dies kann nur aus Python-Code erfolgen, nicht aus der Datei matplotlibrc.)
Tick- und Tick-Beschriftungsfarben können jetzt unabhängig voneinander mit `rcParams` gesetzt werden#
Zuvor definierte rcParams["xtick.color"] (Standard: 'black') sowohl die Tick-Farbe als auch die Beschriftungsfarbe. Die Beschriftungsfarbe kann nun unabhängig davon mit rcParams["xtick.labelcolor"] (Standard: 'inherit') gesetzt werden. Sie ist standardmäßig auf 'inherit' gesetzt, was den Wert von rcParams["xtick.color"] (Standard: 'black') übernimmt. Dasselbe gilt für ytick.[label]color. Um beispielsweise die Ticks auf hellgrau und die Tick-Beschriftungen auf schwarz zu setzen, können Sie den folgenden Code in einem Skript verwenden.
import matplotlib as mpl
mpl.rcParams['xtick.labelcolor'] = 'lightgrey'
mpl.rcParams['xtick.color'] = 'black'
mpl.rcParams['ytick.labelcolor'] = 'lightgrey'
mpl.rcParams['ytick.color'] = 'black'
Oder indem Sie die folgenden Zeilen zur Datei matplotlibrc oder einer Matplotlib-Stildatei hinzufügen.
xtick.labelcolor : lightgrey
xtick.color : black
ytick.labelcolor : lightgrey
ytick.color : black
3D-Achsen-Verbesserungen#
Fehlerbalken-Methode in 3D-Achsen#
Die Fehlerbalkenfunktion Axes.errorbar wurde vollständig in das 3D-Achsen-Framework übernommen und unterstützt Funktionen wie benutzerdefinierte Stile für Fehlerlinien und Kappenmarkierungen, Kontrolle über den Abstand der Fehlerbalken und Markierungen für obere und untere Grenzen.
Stamm-Plots in 3D-Achsen#
Stamm-Plots werden jetzt auf 3D-Achsen unterstützt. Ähnlich wie bei 2D-Stämmen unterstützt stem das Plotten von Stämmen in verschiedenen Ausrichtungen.
Siehe auch die 3D-Stamm-Demo.
3D-Kollektionseigenschaften sind jetzt modifizierbar#
Zuvor konnten Eigenschaften einer 3D-Kollektion, die für 3D-Effekte verwendet wurden (z. B. Farben wurden zur Erzeugung von Tiefenschattierungen modifiziert), nach ihrer Erstellung nicht mehr geändert werden.
Jetzt ist es möglich, alle Eigenschaften von 3D-Kollektionen jederzeit zu ändern.
Schwenken in 3D-Achsen#
Klicken und ziehen Sie mit der mittleren Maustaste, um 3D-Achsen zu schwenken.
Interaktive Werkzeugverbesserungen#
Neues RangeSlider-Widget#
widgets.RangeSlider ermöglicht die Erstellung eines Schiebereglers, der einen Bereich und nicht nur einen einzelnen Wert definiert.
Schieberegler können jetzt an beliebige Werte einrasten#
Das UI-Widget Slider akzeptiert jetzt Arrays für `valstep`. Dies verallgemeinert das bisherige Verhalten, indem es dem Schieberegler ermöglicht, an beliebige Werte einzurasten.
Pausieren und Fortsetzen von Animationen#
Die Methoden animation.Animation.pause und animation.Animation.resume ermöglichen das Pausieren und Fortsetzen von Animationen. Diese Methoden können als Rückrufe für Ereignis-Listener auf UI-Elementen verwendet werden, sodass Ihre Plots eine Wiedergabesteuerungs-UI haben können.
Sphinx-Erweiterungen#
Option caption der `plot_directive`#
Bildunterschriften wurden bisher unterstützt, wenn die Direktive `plot_directive` mit einer externen Quelldatei verwendet wurde, indem der Inhalt angegeben wurde.
.. plot:: path/to/plot.py
This is the caption for the plot.
Die Option `:caption:` ermöglicht die Angabe der Bildunterschrift für sowohl externe
.. plot:: path/to/plot.py
:caption: This is the caption for the plot.
als auch Inline-Plots.
.. plot::
:caption: This is a caption for the plot.
plt.plot([1, 2, 3])
Backend-spezifische Verbesserungen#
Aufeinanderfolgende gerasterte Zeichnungen werden nun zusammengeführt#
Elemente einer Vektorausgabe können einzeln als gerastert festgelegt werden, indem das Schlüsselwortargument `rasterized` verwendet wird, oder durch set_rasterized(). Dies kann zur Reduzierung der Dateigrößen nützlich sein. Für Abbildungen mit mehreren Rasterelementen werden diese nun automatisch zu einer kleineren Anzahl von Bitmaps zusammengeführt, wenn dies die visuelle Ausgabe nicht beeinträchtigt. In Fällen mit vielen Elementen kann dies zu deutlich kleineren Dateigrößen führen.
Um sicherzustellen, dass dies geschieht, platzieren Sie keine Vektorelemente zwischen Rasterelementen.
Um diese Zusammenführung zu verhindern, setzen Sie Figure.suppressComposite auf True.
Unterstützung für Roh-/RGBA-Frame-Format in FFMpegFileWriter#
Bei Verwendung von FFMpegFileWriter kann das Argument `frame_format` nun auf "raw" oder "rgba" gesetzt werden, was möglicherweise geringfügig schneller ist als ein Bildformat, da keine Kodierung/Dekodierung zwischen Matplotlib und FFmpeg erfolgen muss.
nbAgg/WebAgg unterstützen Mittelklick und Doppelklick#
Doppelklickereignisse werden nun von den nbAgg- und WebAgg-Backends unterstützt. Früher meldete WebAgg Mittelklick-Ereignisse als Rechtsklicks, berichtet aber jetzt den korrekten Button-Typ.
nbAgg unterstützt binäre Kommunikation#
Wenn der Webbrowser und das Notebook binäre WebSockets unterstützen, verwendet nbAgg diese nun für eine geringfügig verbesserte Übertragung der Abbildungsanzeige.
Indizierte Farbe für PNG-Bilder in PDF-Dateien, wenn möglich#
Wenn PNG-Bilder 256 Farben oder weniger haben, werden sie in eine indizierte Farbe konvertiert, bevor sie in einer PDF gespeichert werden. Dies kann in einigen Fällen zu einer erheblichen Reduzierung der Dateigröße führen. Dies gilt insbesondere für Rasterdaten, die eine Colormap, aber keine Interpolation verwenden, wie z. B. Healpy mollview-Plots. Derzeit geschieht dies nur für RGB-Bilder.
Verbesserte Schriftarten-Subsetierung in PDF/PS#
Die Schriftarten-Subsetierung in PDF und PostScript wurde vom eingebetteten ttconv C-Code in Python neu geschrieben. Einige zusammengesetzte Zeichen und Umrisse können sich geringfügig geändert haben. Dies behebt die TTC-Subsetierung in PDF und fügt die Unterstützung für die Subsetierung von Typ-3-OTF-Schriftarten hinzu, was zu kleineren Dateien führt (viel kleiner bei Verwendung von CJK-Schriftarten) und Probleme mit Typ-42-Einbettung und bestimmten PDF-Readern wie Acrobat Reader vermeidet.
Kerning zu Zeichenketten in PDFs hinzugefügt#
Wie bei Text, der im Agg-Backend erzeugt wird (siehe den vorherigen „Was gibt’s Neues“-Eintrag für Beispiele), enthalten PDFs jetzt Kerning in Zeichenketten.
Vollständig-gebrochene HiDPI in QtAgg#
Vollständig-gebrochene HiDPI (d.h. HiDPI-Verhältnisse, die keine ganzen Zahlen sind) wurde in Qt 5.14 hinzugefügt und wird nun vom QtAgg-Backend unterstützt, wenn diese oder eine neuere Version von Qt verwendet wird.
wxAgg unterstützt Vollbild-Umschaltung#
Das wxAgg-Backend unterstützt die Umschaltung in den Vollbildmodus über die Tastenkombination f oder die Managerfunktion FigureManagerBase.full_screen_toggle.