Was gibt es Neues in Matplotlib 2.0 (17. Jan 2017)#
Hinweis
Matplotlib 2.0 unterstützt Python 2.7 und 3.4+
Änderungen des Standardstils#
Die wichtigsten Änderungen in v2.0 betreffen die Überarbeitung der Standardstile.
Verbesserte API zur Farbumwandlung und RGBA-Unterstützung#
Das Modul colors erhielt eine neue API zur Farbumwandlung mit voller Unterstützung für den Alphakanal. Die wichtigsten öffentlichen Funktionen sind is_color_like(), matplotlib.colors.to_rgba(), matplotlib.colors.to_rgba_array() und to_hex(). RGBA-Quadrupel werden im Hex-Format als "#rrggbbaa" kodiert.
Ein Nebeneffekt ist, dass der Qt-Optioneneditor nun auch den Alphakanal von Künstlern einstellen kann.
Neue Konfiguration (rcParams)#
Neue rcParams hinzugefügt
Parameter |
Beschreibung |
|---|---|
|
Formatierungszeichenkette für Datumsangaben in Jahres-Skalen |
|
Formatierungszeichenkette für Datumsangaben in Monats-Skalen |
|
Formatierungszeichenkette für Datumsangaben in Tages-Skalen |
|
Formatierungszeichenkette für Zeitangaben in Stunden-Skalen |
|
Formatierungszeichenkette für Zeitangaben in Minuten-Skalen |
|
Formatierungszeichenkette für Zeitangaben in Sekunden-Skalen |
|
Formatierungszeichenkette für Zeitangaben in Mikrosekunden-Skalen |
|
Standardmarker für Scatterplots |
|
Siehe Hinweis |
|
Steuert, wo Haupt- und Nebenticks gezeichnet werden. Die globalen Werte werden mit den entsprechenden Haupt-/Nebenwerten verknüpft (`and`). |
|
Die Standardanzahl von Bins, die in |
|
Ob die Linien-Dashes-Muster mit der Linienbreite skaliert werden. |
|
Minimale Anzahl von Ziffern in Achsenbeschriftungen, die zur Verwendung eines Offsets führt. |
Hinzufügung des svg.hashsalt Schlüssels zu rcParams#
Wenn svg.hashsalt None ist (was der Standard ist), verwendet das SVG-Backend uuid4, um den Hash-Salt zu generieren. Wenn es nicht None ist, muss es eine Zeichenkette sein, die als Hash-Salt anstelle von uuid4 verwendet wird. Dies ermöglicht deterministische SVG-Ausgaben.
Entfernung des svg.image_noscale rcParam#
Als Ergebnis der umfassenden Änderungen an der Bildverarbeitung wurde der svg.image_noscale rcParam entfernt. Die gleiche Funktionalität kann erreicht werden, indem interpolation='none' für einzelne Bilder oder global über den image.interpolation rcParam gesetzt wird.
Qualitative Farbkarten#
Die "qualitativen" Farbkarten von ColorBrewer ("Accent", "Dark2", "Paired", "Pastel1", "Pastel2", "Set1", "Set2", "Set3") waren für diskrete kategoriale Daten ohne Wertimplikation gedacht und wurden daher in ListedColormap anstelle von LinearSegmentedColormap umgewandelt. Daher werden die Farben nicht mehr interpoliert und können für Choroplethen, beschriftete Bildmerkmale usw. verwendet werden.
Achsen-Offset-Beschriftung reagiert nun auf labelcolor#
Achsen-Offset-Beschriftungen werden nun mit der gleichen Farbe wie die Achsen-Tick-Markierungen eingefärbt, wenn labelcolor geändert wird.
Verbesserte Wahl der Offset-Beschriftung#
Die Standardwahl der Offset-Beschriftung wurde geändert, um nur signifikante Ziffern zu verwenden, die für alle Ticks gemeinsam sind (z.B. 1231..1239 -> 1230 statt 1231), außer wenn sie ein Vielfaches einer Zehnerpotenz knapp überschreiten, in welchem Fall dieses Vielfache gewählt wird (z.B. 1999..2001 -> 2000).
Stil-Parameter-Blacklist#
Um unerwartete Konsequenzen bei der Verwendung eines Stils zu vermeiden, können Stil-Dateien keine Parameter mehr setzen, die Dinge beeinflussen, die nicht mit dem Stil zusammenhängen. Diese Parameter beinhalten
'interactive', 'backend', 'backend.qt4', 'webagg.port',
'webagg.port_retries', 'webagg.open_in_browser', 'backend_fallback',
'toolbar', 'timezone', 'datapath', 'figure.max_open_warning',
'savefig.directory', 'tk.window_focus', 'docstring.hardcopy'
Änderung der Standardschriftart#
Die von Matplotlib standardmäßig für Text verwendete Schriftart wurde für die serifenlose und die Serifenschriftartfamilie auf DejaVu Sans bzw. DejaVu Serif geändert. Die DejaVu-Schriftfamilie basiert auf der früheren Matplotlib-Standard-Schriftart Bitstream Vera, enthält aber eine viel größere Bandbreite an Zeichen.
Die Standardschriftart für Mathtext wurde von Computer Modern auf die DejaVu-Familie geändert, um die Konsistenz mit normalem Text zu gewährleisten. Zwei neue Optionen für den Konfigurationsparameter mathtext.fontset wurden hinzugefügt: dejavusans (Standard) und dejavuserif. Beide Optionen verwenden DejaVu-Glyphen, wann immer möglich, und greifen auf STIX-Symbole zurück, wenn ein Glyphen nicht in DejaVu gefunden wird. Um zum vorherigen Verhalten zurückzukehren, setzen Sie den rcParam mathtext.fontset auf cm.
Schnellere Textdarstellung#
Die Darstellung von Text im Agg-Backend ist nun weniger unscharf und etwa 20 % schneller zu zeichnen.
Verbesserungen für den Qt-Figuren-Optionseditor#
Verschiedene Benutzerfreundlichkeitsverbesserungen wurden für den Qt-Figuren-Optionseditor implementiert, darunter
Linienstil-Einträge werden nun ohne Duplikate sortiert.
Die Farbkarten- und Normalisierungsgrenzen können nun für Bilder eingestellt werden.
Line-Edits für Gleitkommawerte zeigen nun nur so viele Ziffern an, wie zur Vermeidung von Präzisionsverlust notwendig sind. Ein wichtiger Fehler bei der Eingabevalidierung mit Qt5 und einer Locale, in der das Dezimaltrennzeichen "," ist, wurde ebenfalls behoben.
Der Achsenwähler verwendet nun kürzere, benutzerfreundlichere Namen für Achsen und stürzt nicht ab, wenn keine Achsen vorhanden sind.
Linien- und Bildeinträge mit den Standardbezeichnungen ("_lineX", "_imageX") werden nun numerisch sortiert, auch wenn mehr als 10 Einträge vorhanden sind.
Verbesserte Bildunterstützung#
Vor Version 2.0 resampelte Matplotlib Bilder, indem zuerst die Farbkarten angewendet und dann das Ergebnis skaliert wurde. Da die Skalierung auf dem gefärbten Bild erfolgte, führte dies zu Farben im Ausgabebild, die in der Farbkarten nicht tatsächlich vorhanden waren. Nun werden Bilder zuerst skaliert (und bei Float-Eingabebildern vollständig in Float), und dann wird die Farbkarten angewendet.
Um diese wichtige Änderung vorzunehmen, wurde der Code zur Bildverarbeitung fast vollständig neu geschrieben. Als Nebeneffekt verbraucht die Bildskalierung weniger Speicher und weniger Datentypkonvertierungen als zuvor.
Das experimentelle private Feature, mit dem ein Bild durch Setzen des privaten Mitglieds _image_skew_coordinate "verzerrt" werden konnte, wurde entfernt. Stattdessen folgen Bilder der Transformation der Achsen, auf denen sie gezeichnet werden.
Nicht-lineare Skalen auf Bildplots#
imshow zeichnet nun Daten an den angeforderten Punkten im Datenraum nach Anwendung nicht-linearer Skalen.
Das Bild auf der linken Seite zeigt das neue, korrekte Verhalten. Das alte Verhalten kann mit pcolormesh nachgebildet werden, wie auf der rechten Seite gezeigt.
Dies kann analog zur Darstellung eines Histogramms mit linear verteilten Bins auf einer logarithmischen x-Achse verstanden werden. Gleich große Bins werden für kleine x breiter und für große x schmaler dargestellt.
Unterstützung für HiDPI (Retina)-Displays in den NbAgg- und WebAgg-Backends#
Die NbAgg- und WebAgg-Backends nutzen nun die volle Auflösung Ihres hochauflösenden Displays.
Änderung des Standard-Animationscodecs#
Der Standard-Animationscodec wurde von mpeg4 auf h264 geändert, was effizienter ist. Dies kann über den animation.codec rcParam eingestellt werden.
Veraltete Unterstützung für mencoder in Animationen#
Die Verwendung von mencoder zum Schreiben von Videodateien mit mpl ist problematisch; ein Wechsel zu ffmpeg wird dringend empfohlen. Die gesamte Unterstützung für mencoder wird in Version 2.2 entfernt.
Boxplot Zorder Schlüsselwort-Argument#
Der zorder-Parameter existiert nun für boxplot. Dies ermöglicht es, den zorder eines Boxplots im Plot-Funktionsaufruf festzulegen.
boxplot(np.arange(10), zorder=10)
Gefüllte + und x Marker#
Neue, füllbare Plus- und x-Marker wurden hinzugefügt. Siehe das Modul markers und die Beispiele in der Marker-Referenz.
rcount und ccount für plot_surface#
Ab v2.0 akzeptiert mplot3d's plot_surface nun die Argumente rcount und ccount zur Steuerung der Stichprobennahme der Eingabedaten für die Darstellung. Diese Argumente geben die maximale Anzahl von gleichmäßig verteilten Stichproben an, die aus den Eingabedaten gezogen werden. Diese Argumente sind auch die neue Standardmethode für die Stichprobennahme der Funktion und gelten als Stiländerung.
Die alten Argumente rstride und cstride, die die Größe der gleichmäßig verteilten Stichproben angaben, werden zum Standard, wenn der 'classic'-Modus aufgerufen wird, und sind weiterhin verfügbar. Es gibt keine Pläne, diese Argumente zu verwerfen.
Änderungen am Zorder-Schlüsselwort-Argument von Streamplot#
Der Parameter zorder für streamplot hat nun einen Standardwert von None anstelle von 2. Wenn None als zorder angegeben wird, hat streamplot einen Standard-zorder von matplotlib.lines.Line2D.zorder.
Erweiterung für matplotlib.backend_bases.GraphicsContextBase#
Zur Unterstützung der Standardisierung des Schraffurverhaltens über die Backends hinweg liefern wir die Methode matplotlib.backend_bases.GraphicsContextBase.get_hatch_color, die zu matplotlib.backend_bases.GraphicsContextBase hinzugefügt wurde. Diese wird nur während des Rendering-Prozesses in den mitgelieferten Backends verwendet und bricht daher keine Drittanbieter-Backends.
Wenn Sie ein Drittanbieter-Backend pflegen, das GraphicsContextBase erweitert, steht Ihnen diese Methode nun zur Verfügung und sollte zur Farbgebung von Schraffurmuster verwendet werden.