Änderungen am Standardstil#

Die wichtigsten Änderungen in Matplotlib 2.0 sind die Änderungen am Standardstil.

Auch wenn es unmöglich ist, für alle Fälle den besten Standard auszuwählen, sind diese so konzipiert, dass sie in den häufigsten Fällen gut funktionieren.

Ein 'classic'-Stylesheet ist vorhanden, sodass die Rückkehr zu den Standardwerten von 1.x nur eine einzige Python-Zeile erfordert.

import matplotlib.style
import matplotlib as mpl
mpl.style.use('classic')

Siehe Die matplotlibrc-Datei für Details, wie Sie viele dieser Änderungen dauerhaft und selektiv rückgängig machen können.

Farben, Farbzyklen und Colormaps#

Farben im Standard-Eigenschaftszyklus#

Die Farben im Standard-Eigenschaftszyklus wurden von ['b', 'g', 'r', 'c', 'm', 'y', 'k'] zur category10-Farbpalette geändert, die von Vega und d3 verwendet wird, ursprünglich entwickelt bei Tableau.

(Quellcode, 2x.png, png)

Zusätzlich zur Änderung der Farben wurde eine weitere Methode zur Angabe von Farben hinzugefügt. Zuvor waren die Standardfarben die einstelligen Kurznotationen für Rot, Grün, Blau, Cyan, Magenta, Gelb und Schwarz. Dies machte sie leicht zu tippen und in der abgekürzten Stilzeichenfolge in plot verwendbar. Die neuen Standardfarben werden jedoch nur über Hex-Werte angegeben. Um auf diese Farben außerhalb des Eigenschaftszyklus zuzugreifen, wurde die Notation für Farben 'CN', wobei N Werte von 0-9 annimmt, hinzugefügt, um die ersten 10 Farben in rcParams["axes.prop_cycle"] (Standard: cycler('color', ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf'])) zu bezeichnen. Siehe Farben angeben für weitere Details.

Um den alten Farbzyklus wiederherzustellen, verwenden Sie

from cycler import cycler
mpl.rcParams['axes.prop_cycle'] = cycler(color='bgrcmyk')

oder setzen Sie

axes.prop_cycle    : cycler('color', 'bgrcmyk')

in Ihrer matplotlibrc-Datei.

Colormap#

Die neue Standard-Colormap, die von matplotlib.cm.ScalarMappable-Instanzen verwendet wird, ist 'viridis' (auch bekannt als Option D).

(Quellcode, 2x.png, png)

Für eine Einführung in die Farbtheorie und wie 'viridis' generiert wurde, sehen Sie sich den Vortrag von Nathaniel Smith und Stéfan van der Walt von SciPy2015 an. Weitere Details zu den anderen Alternativen und den Werkzeugen, die zur Erstellung der Colormap verwendet wurden, finden Sie hier. Details zu allen in Matplotlib verfügbaren Colormaps finden Sie unter Auswahl von Colormaps in Matplotlib.

Die vorherige Standardeinstellung kann wiederhergestellt werden durch

mpl.rcParams['image.cmap'] = 'jet'

oder durch Setzen von

image.cmap    : 'jet'

in Ihrer matplotlibrc-Datei; dies wird jedoch dringend abgeraten.

Interaktive Grafiken#

Die Standardfarbe des interaktiven Grafikhintergrunds wurde von Grau auf Weiß geändert, was der Standardhintergrundfarbe beim Speichern entspricht.

Die vorherigen Standardeinstellungen können wiederhergestellt werden durch

mpl.rcParams['figure.facecolor'] = '0.75'

oder durch Setzen von

figure.facecolor : '0.75'

in Ihrer matplotlibrc-Datei.

Gitterlinien#

Der Standardstil von Gitterlinien wurde von schwarzen gestrichelten Linien zu dickeren, durchgezogenen, hellgrauen Linien geändert.

(Quellcode, 2x.png, png)

Die vorherige Standardeinstellung kann wiederhergestellt werden durch Verwendung von

mpl.rcParams['grid.color'] = 'k'
mpl.rcParams['grid.linestyle'] = ':'
mpl.rcParams['grid.linewidth'] = 0.5

oder durch Setzen von

grid.color       :   k       # grid color
grid.linestyle   :   :       # dotted
grid.linewidth   :   0.5     # in points

in Ihrer matplotlibrc-Datei.

Figurengröße, Schriftgröße und Bildschirm-DPI#

Die standardmäßige DPI für die Anzeige auf dem Bildschirm wurde von 80 DPI auf 100 DPI geändert, was der Standard-DPI für das Speichern von Dateien entspricht. Aufgrund dieser Änderung ist die Anzeige auf dem Bildschirm nun "What-You-See-Is-What-You-Get" für gespeicherte Dateien. Um die Figur in Bezug auf Pixel in etwa gleich groß auf dem Bildschirm zu halten, wurde die Standard-Figurengröße von 8x6 Zoll auf 6,4x4,8 Zoll reduziert. Als Konsequenz davon wurden die Standard-Schriftgrößen für Titel, Tick-Labels und Achsen-Labels reduziert, um ihre Größe relativ zur Gesamtgröße der Figur beizubehalten. Standardmäßig ist die DPI des gespeicherten Bildes nun die DPI der gespeicherten Figure-Instanz.

Dies hat Auswirkungen, wenn Sie versuchen, Text in einer Figur direkt mit externem Text abzugleichen.

Die vorherigen Standardeinstellungen können wiederhergestellt werden durch

mpl.rcParams['figure.figsize'] = [8.0, 6.0]
mpl.rcParams['figure.dpi'] = 80
mpl.rcParams['savefig.dpi'] = 100

mpl.rcParams['font.size'] = 12
mpl.rcParams['legend.fontsize'] = 'large'
mpl.rcParams['figure.titlesize'] = 'medium'

oder durch Setzen von

figure.figsize   : [8.0, 6.0]
figure.dpi       : 80
savefig.dpi      : 100

font.size        : 12.0
legend.fontsize  : 'large'
figure.titlesize : 'medium'

In Ihrer matplotlibrc-Datei.

Zusätzlich ist das `forward`-Argument von set_size_inches standardmäßig True gesetzt, um die interaktive Erfahrung zu verbessern. Backend-Canvases, die die Größe ihrer gebundenen matplotlib.figure.Figure anpassen, müssen forward=False übergeben, um ein zirkuläres Verhalten zu vermeiden. Dieser Standardwert ist nicht konfigurierbar.

Plot-Funktionen#

scatter#

Die folgenden Änderungen wurden am Standardverhalten von scatter vorgenommen.

  • Die Standardgröße der Elemente in einem Streudiagramm basiert nun auf rcParams["lines.markersize"] (Standard: 6.0), um Konsistenz mit plot(X, Y, 'o') zu gewährleisten. Der alte Wert war 20, und der neue Wert ist 36 (6^2).

  • Scatter-Markierungen haben keine schwarze Umrandung mehr.

  • Wenn die Farbe der Markierungen nicht angegeben ist, folgt sie dem Eigenschaftszyklus und bezieht sich aus dem 'patches'-Zyklus der Axes.

(Quellcode, 2x.png, png)

Das klassische Standardverhalten von scatter kann nur durch mpl.style.use('classic') wiederhergestellt werden. Die Markergröße kann durch

mpl.rcParam['lines.markersize'] = np.sqrt(20)

wiederhergestellt werden, dies beeinflusst jedoch auch die Standard-Markergröße von plot. Um das klassische Verhalten aufgerufenbasis wiederherzustellen, übergeben Sie die folgenden Keyword-Argumente.

classic_kwargs = {'s': 20, 'edgecolors': 'k', 'c': 'b'}

plot#

Die folgenden Änderungen wurden am Standardverhalten von plot vorgenommen.

  • Die Standard-Linienbreite wurde von 1 auf 1,5 erhöht.

  • Die Strichmuster, die mit '--', ':' und '-.' verbunden sind, haben sich geändert.

  • Die Strichmuster skalieren jetzt mit der Linienbreite.

(Quellcode, 2x.png, png)

Die vorherigen Standardwerte können durch Setzen von wiederhergestellt werden

mpl.rcParams['lines.linewidth'] = 1.0
mpl.rcParams['lines.dashed_pattern'] = [6, 6]
mpl.rcParams['lines.dashdot_pattern'] = [3, 5, 1, 5]
mpl.rcParams['lines.dotted_pattern'] = [1, 3]
mpl.rcParams['lines.scale_dashes'] = False

oder durch Setzen von

lines.linewidth   : 1.0
lines.dashed_pattern : 6, 6
lines.dashdot_pattern : 3, 5, 1, 5
lines.dotted_pattern : 1, 3
lines.scale_dashes: False

in Ihrer matplotlibrc-Datei.

errorbar#

Standardmäßig sind keine Kappen am Ende von Fehlerbalken vorhanden.

(Quellcode, 2x.png, png)

Dies ändert auch den Rückgabewert von errorbar(), da die Liste der 'caplines' standardmäßig leer ist.

Die vorherigen Standardwerte können durch Setzen von wiederhergestellt werden

mpl.rcParams['errorbar.capsize'] = 3

oder durch Setzen von

errorbar.capsize : 3

in Ihrer matplotlibrc-Datei.

boxplot#

Zuvor bestand ein Boxplot aus einer Mischung von Stilen, die mehr oder weniger von Matlab übernommen wurden. Die meisten Elemente waren blau, aber die Mediane waren rot. Die Ausreißer waren schwarze Plus-Symbole ('+') und die Whisker waren gestrichelte Linien, was zu Ambiguität führte, wenn die (durchgezogenen und schwarzen) Kappen nicht gezeichnet wurden.

Bei den neuen Standardeinstellungen ist alles schwarz außer den Median- und Mittelwertlinien (falls gezeichnet), die auf die ersten beiden Elemente des aktuellen Farbzyklus gesetzt sind. Außerdem sind die Standard-Ausreißer-Markierungen nun hohle Kreise, was die Fähigkeit der Plus-Symbole, sich zu überlappen, ohne die Daten zu sehr zu verdecken, beibehält.

(Quellcode, 2x.png, png)

Die vorherigen Standardwerte können durch Setzen von wiederhergestellt werden

mpl.rcParams['boxplot.flierprops.color'] = 'k'
mpl.rcParams['boxplot.flierprops.marker'] = '+'
mpl.rcParams['boxplot.flierprops.markerfacecolor'] = 'none'
mpl.rcParams['boxplot.flierprops.markeredgecolor'] = 'k'
mpl.rcParams['boxplot.boxprops.color'] = 'b'
mpl.rcParams['boxplot.whiskerprops.color'] = 'b'
mpl.rcParams['boxplot.whiskerprops.linestyle'] = '--'
mpl.rcParams['boxplot.medianprops.color'] = 'r'
mpl.rcParams['boxplot.meanprops.color'] = 'r'
mpl.rcParams['boxplot.meanprops.marker'] = '^'
mpl.rcParams['boxplot.meanprops.markerfacecolor'] = 'r'
mpl.rcParams['boxplot.meanprops.markeredgecolor'] = 'k'
mpl.rcParams['boxplot.meanprops.markersize'] = 6
mpl.rcParams['boxplot.meanprops.linestyle'] = '--'
mpl.rcParams['boxplot.meanprops.linewidth'] = 1.0

oder durch Setzen von

boxplot.flierprops.color:           'k'
boxplot.flierprops.marker:          '+'
boxplot.flierprops.markerfacecolor: 'none'
boxplot.flierprops.markeredgecolor: 'k'
boxplot.boxprops.color:             'b'
boxplot.whiskerprops.color:         'b'
boxplot.whiskerprops.linestyle:     '--'
boxplot.medianprops.color:          'r'
boxplot.meanprops.color:            'r'
boxplot.meanprops.marker:           '^'
boxplot.meanprops.markerfacecolor:  'r'
boxplot.meanprops.markeredgecolor:  'k'
boxplot.meanprops.markersize:        6
boxplot.meanprops.linestyle:         '--'
boxplot.meanprops.linewidth:         1.0

in Ihrer matplotlibrc-Datei.

fill_between und fill_betweenx#

fill_between und fill_betweenx folgen beide dem Patch-Farbzyklus.

(Quellcode, 2x.png, png)

Wenn die Füllfarbe über das Keyword-Argument facecolors oder color gesetzt wird, wird die Farbe nicht zyklisch durchlaufen.

Um das vorherige Verhalten wiederherzustellen, übergeben Sie explizit das Keyword-Argument facecolors='C0' an den Methodenaufruf.

Patch-Kanten und Farbe#

Die meisten mit einem Patch gezeichneten Künstler (`~matplotlib.axes.Axes.bar`, `~matplotlib.axes.Axes.pie` usw.) haben standardmäßig keine schwarze Kante mehr. Die Standard-Füllfarbe ist jetzt 'C0' anstelle von 'b'.

(Quellcode, 2x.png, png)

Die vorherigen Standardwerte können durch Setzen von wiederhergestellt werden

mpl.rcParams['patch.force_edgecolor'] = True
mpl.rcParams['patch.facecolor'] = 'b'

oder durch Setzen von

patch.facecolor        : b
patch.force_edgecolor  : True

in Ihrer matplotlibrc-Datei.

hexbin#

Der Standardwert des `linecolor`-Keyword-Arguments für hexbin hat sich von 'none' zu 'face' geändert. Wenn jetzt 'none' übergeben wird, werden keine Linienränder um die Sechsecke gezeichnet.

bar und barh#

Der Standardwert des `align`-Kwargs für sowohl bar als auch barh wird von 'edge' zu 'center' geändert.

(Quellcode, 2x.png, png)

Um das vorherige Verhalten wiederherzustellen, übergeben Sie explizit das Keyword-Argument align='edge' an den Methodenaufruf.

Schraffur#

Die Farbe der Linien in der Schraffur wird nun bestimmt durch

  • Wenn eine Randfarbe explizit gesetzt ist, verwenden Sie diese für die Schraffurfarbe.

  • Wenn die Randfarbe nicht explizit gesetzt ist, verwenden Sie rcParams["hatch.color"] (Standard: 'black'), die zur Zeit der Erstellung des Künstlers abgerufen wird.

Die Breite der Linien in einem Schraffurmuster ist nun konfigurierbar durch die rcParams rcParams["hatch.linewidth"] (Standard: 1.0), die standardmäßig auf 1 Punkt gesetzt ist. Das alte Verhalten für die Linienbreite war je nach Backend unterschiedlich.

  • PDF: 0,1 pt

  • SVG: 1,0 pt

  • PS: 1 px

  • Agg: 1 px

Das alte Linienbreitenverhalten kann nicht gleichzeitig für alle Backends wiederhergestellt werden, kann aber für ein einzelnes Backend wiederhergestellt werden, indem

mpl.rcParams['hatch.linewidth'] = 0.1  # previous pdf hatch linewidth
mpl.rcParams['hatch.linewidth'] = 1.0  # previous svg hatch linewidth

Das Verhalten der PS- und Agg-Backends war DPI-abhängig, daher

mpl.rcParams['figure.dpi'] = dpi
mpl.rcParams['savefig.dpi'] = dpi  # or leave as default 'figure'
mpl.rcParams['hatch.linewidth'] = 1.0 / dpi  # previous ps and Agg hatch linewidth

Es gibt keine direkte API-Steuerung der Schraffurfarbe oder -breite.

Schraffurmuster werden nun mit einer konsistenten Dichte gerendert, unabhängig von der DPI. Zuvor waren hoch-DPI-Grafiken dichter als der Standard und niedrig-DPI-Grafiken weniger dicht. Dieses alte Verhalten kann nicht direkt wiederhergestellt werden, aber die Dichte kann durch Wiederholung des Schraffurspezifikators erhöht werden.

Schriftarten#

Normaler Text#

Die Standardschriftart wurde von "Bitstream Vera Sans" zu "DejaVu Sans" geändert. DejaVu Sans verfügt über zusätzliche internationale und mathematische Zeichen, hat aber ansonsten das gleiche Aussehen wie Bitstream Vera Sans. Lateinisch, Griechisch, Kyrillisch, Armenisch, Georgisch, Hebräisch und Arabisch werden alle unterstützt (aber Rechts-nach-links-Rendering wird von Matplotlib immer noch nicht unterstützt). Darüber hinaus enthält DejaVu eine Teilmenge von Emoji-Symbolen.

(Quellcode, 2x.png, png)

Siehe das DejaVu Sans PDF-Beispiel für die vollständige Abdeckung.

Mathetext#

Die Standardschriftart für mathematische Formeln bei Verwendung der integrierten Mathetext-Engine (mathtext) wurde von "Computer Modern" (d. h. LaTeX-ähnlich) zu "DejaVu Sans" geändert. Diese Änderung hat keine Auswirkungen, wenn das TeX-Backend verwendet wird (d. h. wenn text.usetex True ist).

(Quellcode, 2x.png, png)

(Quellcode, 2x.png, png)

Um zum alten Verhalten zurückzukehren, setzen Sie

mpl.rcParams['mathtext.fontset'] = 'cm'
mpl.rcParams['mathtext.rm'] = 'serif'

oder setzen Sie

mathtext.fontset: cm
mathtext.rm : serif

in Ihrer matplotlibrc-Datei.

Diese rcParam wird beim Zeichnen des Textes berücksichtigt, nicht bei der Erstellung des Künstlers. Daher wird der gesamte Mathetext auf einem gegebenen canvas denselben Zeichensatz verwenden.

Legenden#

  • Standardmäßig ist die Anzahl der in einer Legende angezeigten Punkte nun 1.

  • Die Standard-Legendenposition ist 'best', sodass die Legende automatisch an einer Position platziert wird, um die Überlappung mit Daten zu minimieren.

  • Die Standardeinstellungen der Legende umfassen nun abgerundete Ecken, eine hellere Umrandung und eine teilweise transparente Umrandung und Hintergrund.

(Quellcode, 2x.png, png)

Die vorherigen Standardwerte können durch Setzen von wiederhergestellt werden

mpl.rcParams['legend.fancybox'] = False
mpl.rcParams['legend.loc'] = 'upper right'
mpl.rcParams['legend.numpoints'] = 2
mpl.rcParams['legend.fontsize'] = 'large'
mpl.rcParams['legend.framealpha'] = None
mpl.rcParams['legend.scatterpoints'] = 3
mpl.rcParams['legend.edgecolor'] = 'inherit'

oder durch Setzen von

legend.fancybox      : False
legend.loc           : upper right
legend.numpoints     : 2      # the number of points in the legend line
legend.fontsize      : large
legend.framealpha    : None    # opacity of legend frame
legend.scatterpoints : 3 # number of scatter points
legend.edgecolor     : inherit   # legend edge color ('inherit'
                                 # means it uses axes.edgecolor)

in Ihrer matplotlibrc-Datei.

Bild#

Interpolation#

Die Standard-Interpolationsmethode für imshow ist nun 'nearest' und standardmäßig werden die Daten vor dem Colormapping neu abgetastet (sowohl hoch- als auch herunterskalierend).

(Quellcode, 2x.png, png)

Um das vorherige Verhalten wiederherzustellen, setzen Sie

mpl.rcParams['image.interpolation'] = 'bilinear'
mpl.rcParams['image.resample'] = False

oder setzen Sie

image.interpolation  : bilinear  # see help(imshow) for options
image.resample  : False

in Ihrer matplotlibrc-Datei.

Colormapping-Pipeline#

Zuvor wurden die Eingabedaten normalisiert, dann colormapped und dann auf die für den Bildschirm erforderliche Auflösung neu abgetastet. Das bedeutete, dass die endgültige Neuabtastung im Farbraum erfolgte. Da die Colormaps im RGB-Raum im Allgemeinen nicht linear sind, können Farben, die nicht in der Colormap enthalten sind, im endgültigen Bild erscheinen. Dieser Fehler wurde durch eine fast vollständige Überarbeitung des Bildverarbeitungscodes behoben.

Die Eingabedaten werden nun normalisiert, dann auf die richtige Auflösung (im normalisierten Datenraum) neu abgetastet und dann in den RGB-Raum colormapped. Dies stellt sicher, dass nur Farben aus der Colormap im endgültigen Bild erscheinen. (Wenn Ihr Betrachter das Bild anschließend neu abtastet, kann der Artefakt wieder auftreten.)

Das vorherige Verhalten kann nicht wiederhergestellt werden.

Schattierung#

  • Der Standard-Schattierungsmodus für die Lichtquellen-Schattierung in matplotlib.colors.LightSource.shade ist nun overlay. Zuvor war es hsv.

Plot-Layout#

Automatische Limits#

Das vorherige automatische Skalierungsverhalten bestand darin, "schöne" runde Zahlen als Ansichtslimits zu finden, die die Datenlimits umschlossen, dies konnte jedoch zu schlechten Plots führen, wenn die Daten zufällig auf einer vertikalen oder horizontalen Linie nahe dem gewählten "runden Zahlen"-Limit lagen. Der neue Standard setzt die Ansichtslimits um 5 % breiter als den Datenbereich.

(Quellcode, 2x.png, png)

Die Größe des Abstands in x- und y-Richtung wird durch die rcParams 'axes.xmargin' bzw. 'axes.ymargin' gesteuert. Ob die Ansichtslimits "runde Zahlen" sein sollen, wird durch rcParams["axes.autolimit_mode"] (Standard: 'data') gesteuert. Im ursprünglichen Modus 'round_number' fallen die Ansichtslimits mit den Ticks zusammen.

Die vorherige Standardeinstellung kann wiederhergestellt werden durch Verwendung von

mpl.rcParams['axes.autolimit_mode'] = 'round_numbers'
mpl.rcParams['axes.xmargin'] = 0
mpl.rcParams['axes.ymargin'] = 0

oder durch Setzen von

axes.autolimit_mode: round_numbers
axes.xmargin: 0
axes.ymargin: 0

in Ihrer matplotlibrc-Datei.

Z-Reihenfolge#

  • Ticks und Gitter werden nun oberhalb von soliden Elementen wie gefüllten Konturen, aber unterhalb von Linien gezeichnet. Um zum vorherigen Verhalten zurückzukehren, Ticks und Gitter oberhalb von Linien zu zeichnen, setzen Sie rcParams['axes.axisbelow'] = False.

Ticks#

Richtung#

Um die Kollision von Tick-Markierungen mit Daten zu reduzieren, zeigen die Standard-Ticks nun standardmäßig nach außen. Darüber hinaus werden Ticks nun nur auf den unteren und linken Spines gezeichnet, um eine Igel-Erscheinung zu vermeiden und eine sauberere Trennung zwischen Subplots zu gewährleisten.

(Quellcode, 2x.png, png)

Um das vorherige Verhalten wiederherzustellen, setzen Sie

mpl.rcParams['xtick.direction'] = 'in'
mpl.rcParams['ytick.direction'] = 'in'
mpl.rcParams['xtick.top'] = True
mpl.rcParams['ytick.right'] = True

oder setzen Sie

xtick.top: True
xtick.direction: in

ytick.right: True
ytick.direction: in

in Ihrer matplotlibrc-Datei.

Anzahl der Ticks#

Der Standard- Locator für die x- und y-Achse ist AutoLocator, der versucht, bis zu einer bestimmten maximalen Anzahl "schön" beabstandete Ticks zu finden. Der Locator enthält nun einen Algorithmus zur Schätzung der maximalen Anzahl von Ticks, die Platz für die Tick-Labels lassen. Standardmäßig stellt er auch sicher, dass mindestens zwei Ticks sichtbar sind.

(Quellcode, 2x.png, png)

Es gibt keine Möglichkeit, außer der Verwendung von mpl.style.use('classic'), das vorherige Verhalten als Standard wiederherzustellen. Achsenweise können Sie den vorhandenen Locator entweder steuern durch

ax.xaxis.get_major_locator().set_params(nbins=9, steps=[1, 2, 5, 10])

oder erstellen Sie einen neuen MaxNLocator

import matplotlib.ticker as mticker
ax.set_major_locator(mticker.MaxNLocator(nbins=9, steps=[1, 2, 5, 10])

Der von MaxNLocator verwendete Algorithmus wurde verbessert und kann in einigen Fällen die Wahl der Tick-Positionen ändern. Dies wirkt sich auch auf AutoLocator aus, das intern MaxNLocator verwendet.

Für eine logarithmische Achse ist der Standard-Locator der LogLocator. Zuvor war die maximale Anzahl von Ticks auf 15 eingestellt und konnte nicht geändert werden. Jetzt gibt es ein numticks-Keyword-Argument, um das Maximum auf jeden ganzzahligen Wert, auf den String 'auto' oder auf seinen Standardwert None, der 'auto' entspricht, einzustellen. Bei der Einstellung 'auto' ist die maximale Anzahl nicht größer als 9 und wird je nach Länge der Achse in Einheiten der Tick-Schriftgröße reduziert. Wie bei AutoLocator reduziert der heuristische Algorithmus das Auftreten überlappender Tick-Beschriftungen, verhindert es aber nicht.

Tick-Beschriftungsformatierung#

LogFormatter Beschriftung von Neben-Ticks#

Neben-Ticks auf einer logarithmischen Achse werden jetzt beschriftet, wenn die Achsenansichtslimits einen Bereich abdecken, der kleiner oder gleich dem Intervall zwischen zwei Haupt-Ticks ist. Siehe LogFormatter für Details. Die Beschriftung von Neben-Ticks ist deaktiviert, wenn mpl.style.use('classic') verwendet wird, kann aber nicht unabhängig über rcParams gesteuert werden.

(Quellcode, 2x.png, png)

ScalarFormatter Tick-Beschriftungsformatierung mit Offsets#

Bei der Standardeinstellung rcParams["axes.formatter.useoffset"] (Standard: True) wird ein Offset verwendet, wenn dadurch 4 oder mehr Ziffern eingespart werden. Dies kann mit dem neuen rcParams["axes.formatter.offset_threshold"] (Standard: 4) gesteuert werden. Um das vorherige Verhalten wiederherzustellen, bei dem ein Offset verwendet wird, um 2 oder mehr Ziffern einzusparen, verwenden Sie rcParams['axes.formatter.offset_threshold'] = 2.

(Quellcode, 2x.png, png)

AutoDateFormatter Formatierungszeichenketten#

Die Standard-Datumsformate basieren nun alle auf dem ISO-Format, d. h. mit dem sich am langsamsten ändernden Wert zuerst. Die Datumsformatierer sind über die rcParams date.autoformatter.* konfigurierbar.

Schwellenwert (Tick-Intervall >= als)

rcParam

klassisch

v2.0

365 Tage

'date.autoformatter.year'

'%Y'

'%Y'

30 Tage

'date.autoformatter.month'

'%b %Y'

'%Y-%m'

1 Tag

'date.autoformatter.day'

'%b %d %Y'

'%Y-%m-%d'

1 Stunde

'date.autoformatter.hour'

'%H:%M:%S'

'%H:%M'

1 Minute

'date.autoformatter.minute'

'%H:%M:%S.%f'

'%H:%M:%S'

1 Sekunde

'date.autoformatter.second'

'%H:%M:%S.%f'

'%H:%M:%S'

1 Mikrosekunde

'date.autoformatter.microsecond'

'%H:%M:%S.%f'

'%H:%M:%S.%f'

Die Python-Datumsformate %x und %X könnten für die Formatierung von Daten basierend auf dem aktuellen Gebietsschema von besonderem Interesse sein.

Das vorherige Standardverhalten kann wiederhergestellt werden durch

mpl.rcParams['date.autoformatter.year'] = '%Y'
mpl.rcParams['date.autoformatter.month'] = '%b %Y'
mpl.rcParams['date.autoformatter.day'] = '%b %d %Y'
mpl.rcParams['date.autoformatter.hour'] = '%H:%M:%S'
mpl.rcParams['date.autoformatter.minute'] = '%H:%M:%S.%f'
mpl.rcParams['date.autoformatter.second'] = '%H:%M:%S.%f'
mpl.rcParams['date.autoformatter.microsecond'] = '%H:%M:%S.%f'

oder durch Setzen von

date.autoformatter.year   : %Y
date.autoformatter.month  : %b %Y
date.autoformatter.day    : %b %d %Y
date.autoformatter.hour   : %H:%M:%S
date.autoformatter.minute : %H:%M:%S.%f
date.autoformatter.second : %H:%M:%S.%f
date.autoformatter.microsecond : %H:%M:%S.%f

in Ihrer matplotlibrc-Datei.

mplot3d#

  • mplot3d berücksichtigt nun einige stilbezogene rcParams anstelle von hartkodierten Standardwerten. Dazu gehören

    • xtick.major.width

    • ytick.major.width

    • xtick.color

    • ytick.color

    • axes.linewidth

    • axes.edgecolor

    • grid.color

    • grid.linewidth

    • grid.linestyle