matplotlib.dates#
Matplotlib bietet ausgefeilte Funktionen für Datumsgrafiken, die auf den Schultern von Python datetime und dem Add-on-Modul dateutil stehen.
Standardmäßig verwendet Matplotlib die in units beschriebene Einheiten-Maschinerie, um datetime.datetime- und numpy.datetime64-Objekte bei der Darstellung auf einer x- oder y-Achse zu konvertieren. Der Benutzer muss nichts weiter tun, damit Daten formatiert werden, aber Daten haben oft strenge Formatierungsanforderungen, daher bietet dieses Modul viele Tick-Locators und Formatierer. Ein grundlegendes Beispiel mit numpy.datetime64 ist
import numpy as np
times = np.arange(np.datetime64('2001-01-02'),
np.datetime64('2002-02-03'), np.timedelta64(75, 'm'))
y = np.random.randn(len(times))
fig, ax = plt.subplots()
ax.plot(times, y)
Siehe auch
Matplotlib Datumsformatierung#
Matplotlib stellt Daten als Gleitkommazahlen dar, die die Anzahl der Tage seit einem Standard-Epoche von 1970-01-01 UTC angeben; zum Beispiel ist 1970-01-01, 06:00 die Gleitkommazahl 0.25. Die Formatierer und Locators erfordern die Verwendung von datetime.datetime-Objekten, so dass nur Daten zwischen den Jahren 0001 und 9999 dargestellt werden können. Mikrosekundenpräzision ist für (ungefähr) 70 Jahre auf beiden Seiten der Epoche erreichbar und 20 Mikrosekunden für den Rest des zulässigen Datumsbereichs (Jahr 0001 bis 9999). Die Epoche kann zur Importzeit über dates.set_epoch oder rcParams["date.epoch"] (Standard: '1970-01-01T00:00:00') auf andere Daten geändert werden, falls erforderlich; siehe Datumpräzision und Epochen für eine Diskussion.
Hinweis
Vor Matplotlib 3.3 war die Epoche 0000-12-31, was die moderne Mikrosekundenpräzision verlor und auch die Standard-Achsenbegrenzung von 0 zu einem ungültigen Datum machte. In 3.3 wurde die Epoche wie oben geändert. Um alte Ordinal-Floats in die neue Epoche zu konvertieren, können Benutzer tun
new_ordinal = old_ordinal + mdates.date2num(np.datetime64('0000-12-31'))
Es gibt eine Reihe von Hilfsfunktionen zur Konvertierung zwischen datetime-Objekten und Matplotlib-Daten
Konvertiert einen Datumsstring mithilfe von |
|
Konvertiert datetime-Objekte in Matplotlib-Daten. |
|
Konvertiert Matplotlib-Daten in |
|
Konvertiert eine Anzahl von Tagen in ein |
|
Gibt eine Sequenz von gleichmäßig verteilten Matplotlib-Daten zurück. |
|
Legt die Epoche (Ursprung für Daten) für Datumsberechnungen fest. |
|
Ruft die von |
Hinweis
Wie Pythons datetime.datetime verwendet Matplotlib den Gregorianischen Kalender für alle Konvertierungen zwischen Daten und Gleitkommazahlen. Diese Praxis ist nicht universell, und Kalenderunterschiede können zu verwirrenden Unterschieden zwischen dem führen, was Python und Matplotlib als Anzahl der Tage seit 0001-01-01 angeben, und dem, was andere Software und Datenbanken liefern. Zum Beispiel verwendet das US Naval Observatory einen Kalender, der im Oktober 1582 vom Julianischen zum Gregorianischen wechselt. Daher beträgt die Anzahl der Tage zwischen dem 01.01.0001 und dem 01.04.2006 unter Verwendung seines Rechners 732403, während wir unter Verwendung des Gregorianischen Kalenders über das datetime-Modul feststellen
In [1]: date(2006, 4, 1).toordinal() - date(1, 1, 1).toordinal()
Out[1]: 732401
Alle Matplotlib-Datumskonverter, Locators und Formatter sind Zeitzonen-bewusst. Wenn keine explizite Zeitzone angegeben wird, wird rcParams["timezone"] (Standard: 'UTC') als Zeichenkette angenommen. Wenn Sie eine andere Zeitzone verwenden möchten, übergeben Sie das Schlüsselwortargument tz von num2date an alle Datum-Tick-Locators oder Formatter, die Sie erstellen. Dies kann entweder eine datetime.tzinfo-Instanz oder eine Zeichenkette mit dem Zeitzonennamen sein, die von gettz geparst werden kann.
In diesem Modul wird eine breite Palette von spezifischen und allgemeinen Datums-Tick-Locators und Formatter bereitgestellt. Allgemeine Informationen zu Tick-Locators und Formatter finden Sie in matplotlib.ticker. Diese werden unten beschrieben.
Das Modul dateutil bietet zusätzlichen Code zur Handhabung von Datums-Ticks, wodurch es einfach wird, Ticks für jede Art von Datum zu platzieren. Beispiele siehe unten.
Datums-Tick-Locators#
Die meisten Datums-Tick-Locators können einzelne oder mehrere Ticks lokalisieren. Zum Beispiel
# import constants for the days of the week
from matplotlib.dates import MO, TU, WE, TH, FR, SA, SU
# tick on Mondays every week
loc = WeekdayLocator(byweekday=MO, tz=tz)
# tick on Mondays and Saturdays
loc = WeekdayLocator(byweekday=(MO, SA))
Zusätzlich nehmen die meisten Konstruktoren ein Intervall-Argument entgegen
# tick on Mondays every second week
loc = WeekdayLocator(byweekday=MO, interval=2)
Der RRule Locator ermöglicht eine vollständig allgemeine Datums-Tick-Platzierung
# tick every 5th easter
rule = rrulewrapper(YEARLY, byeaster=1, interval=5)
loc = RRuleLocator(rule)
Die verfügbaren Datums-Tick-Locators sind
MicrosecondLocator: Lokalisiert Mikrosekunden.SecondLocator: Lokalisiert Sekunden.MinuteLocator: Lokalisiert Minuten.HourLocator: Lokalisiert Stunden.DayLocator: Lokalisiert bestimmte Tage des Monats.WeekdayLocator: Lokalisiert Wochentage, z.B. MO, DI.MonthLocator: Lokalisiert Monate, z.B. 7 für Juli.YearLocator: Lokalisiert Jahre, die Vielfache von base sind.RRuleLocator: Lokalisiert mithilfe einesrrulewrapper.rrulewrapperist ein einfacher Wrapper um dateutil'sdateutil.rrule, der fast beliebige Datums-Tick-Spezifikationen ermöglicht. Siehe rrule-Beispiel.AutoDateLocator: Bei Autoskalierung wählt diese Klasse den bestenDateLocator(z.B.RRuleLocator), um die Sichtgrenzen und die Tick-Positionen festzulegen. Wenn er mitinterval_multiples=Trueaufgerufen wird, werden die Ticks mit sinnvollen Vielfachen der Tick-Intervalle ausgerichtet. Zum Beispiel, wenn das Intervall 4 Stunden beträgt, werden 0, 4, 8 Uhr usw. als Ticks ausgewählt. Dieses Verhalten ist standardmäßig nicht garantiert.
Datums-Formatierer#
Die verfügbaren Datums-Formatierer sind
AutoDateFormatter: Versucht, das beste Format zu ermitteln. Dies ist am nützlichsten in Verbindung mitAutoDateLocator.ConciseDateFormatter: Versucht ebenfalls, das beste Format zu ermitteln und das Format so kompakt wie möglich zu gestalten, aber dennoch alle Datumsinformationen beizubehalten. Dies ist am nützlichsten in Verbindung mitAutoDateLocator.DateFormatter: Verwendetstrftime-Formatstrings.
- class matplotlib.dates.AutoDateFormatter(locator, tz=None, defaultfmt='%Y-%m-%d', *, usetex=None)[Quelle]#
Bases:
FormatterEin
Formatter, der versucht, das beste Format zu ermitteln. Dies ist am nützlichsten in Verbindung mitAutoDateLocator.AutoDateFormatterhat ein.scale-Dictionary, das Tick-Skalen (das Intervall in Tagen zwischen einem Haupt-Tick) auf Formatstrings abbildet; dieses Dictionary ist standardmäßigself.scaled = { DAYS_PER_YEAR: rcParams['date.autoformatter.year'], DAYS_PER_MONTH: rcParams['date.autoformatter.month'], 1: rcParams['date.autoformatter.day'], 1 / HOURS_PER_DAY: rcParams['date.autoformatter.hour'], 1 / MINUTES_PER_DAY: rcParams['date.autoformatter.minute'], 1 / SEC_PER_DAY: rcParams['date.autoformatter.second'], 1 / MUSECONDS_PER_DAY: rcParams['date.autoformatter.microsecond'], }
Der Formatter verwendet den Formatstring, der dem kleinsten Schlüssel im Dictionary entspricht, der größer oder gleich der aktuellen Skala ist. Dictionary-Einträge können angepasst werden
locator = AutoDateLocator() formatter = AutoDateFormatter(locator) formatter.scaled[1/(24*60)] = '%M:%S' # only show min and sec
Als Formatstrings können auch benutzerdefinierte aufrufbare Funktionen verwendet werden. Das folgende Beispiel zeigt, wie eine benutzerdefinierte Formatfunktion verwendet wird, um nachgestellte Nullen von Dezimalsekunden zu entfernen und das Datum zum ersten Tick-Label hinzuzufügen
def my_format_function(x, pos=None): x = matplotlib.dates.num2date(x) if pos == 0: fmt = '%D %H:%M:%S.%f' else: fmt = '%H:%M:%S.%f' label = x.strftime(fmt) label = label.rstrip("0") label = label.rstrip(".") return label formatter.scaled[1/(24*60)] = my_format_function
Automatische Formatierung der Datums-Labels.
- Parameter:
- locator
ticker.Locator Locator, den diese Achse verwendet.
- tzstr oder
tzinfo, Standard:rcParams["timezone"](Standard:'UTC') Zeitzone der Ticks. Wenn es sich um eine Zeichenkette handelt, wird tz an
dateutil.tzübergeben.- defaultfmtstr
Das Standardformat, das verwendet wird, wenn keiner der Werte in
self.scaledgrößer ist als die vonlocator._get_unit()zurückgegebene Einheit.- usetexbool, Standard:
rcParams["text.usetex"](Standard:False) Um die Verwendung von TeX's mathematischem Modus für das Rendern der Ergebnisse des Formatters zu aktivieren/deaktivieren. Wenn Einträge in
self.scaledals Funktionen festgelegt sind, liegt es an der benutzerdefinierten Funktion, den TeX-Mathematikmodus selbst zu aktivieren oder zu deaktivieren.
- locator
- class matplotlib.dates.AutoDateLocator(tz=None, minticks=5, maxticks=None, interval_multiples=True)[Quelle]#
Bases:
DateLocatorBei Autoskalierung wählt diese Klasse den besten
DateLocator, um die Sichtgrenzen und die Tick-Positionen festzulegen.- Attribute:
- intervalddict
Zuordnung von Tick-Frequenzen zu zulässigen Vielfachen für diese Tick-Platzierung. Standard ist
self.intervald = { YEARLY : [1, 2, 4, 5, 10, 20, 40, 50, 100, 200, 400, 500, 1000, 2000, 4000, 5000, 10000], MONTHLY : [1, 2, 3, 4, 6], DAILY : [1, 2, 3, 7, 14, 21], HOURLY : [1, 2, 3, 4, 6, 12], MINUTELY: [1, 5, 10, 15, 30], SECONDLY: [1, 5, 10, 15, 30], MICROSECONDLY: [1, 2, 5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 50000, 100000, 200000, 500000, 1000000], }
wobei die Schlüssel in
dateutil.rruledefiniert sind.Das Intervall wird verwendet, um Vielfache anzugeben, die für die Tick-Frequenz angemessen sind. Zum Beispiel sind 7 Tage pro Woche sinnvoll für tägliche Ticks, aber für Minuten/Sekunden machen 15 oder 30 Sinn.
Bei der Anpassung sollten Sie nur die Werte für die vorhandenen Schlüssel ändern. Sie sollten keine Einträge hinzufügen oder löschen.
Beispiel zum Erzwingen von Ticks alle 3 Stunden
locator = AutoDateLocator() locator.intervald[HOURLY] = [3] # only show every 3 hours
- Parameter:
- tzstr oder
tzinfo, Standard:rcParams["timezone"](Standard:'UTC') Zeitzone der Ticks. Wenn es sich um eine Zeichenkette handelt, wird tz an
dateutil.tzübergeben.- minticksint
Die gewünschte Mindestanzahl von Ticks; steuert, ob Ticks jährlich, monatlich usw. vorkommen.
- maxticksint
Die gewünschte maximale Anzahl von Ticks; steuert das Intervall zwischen den Ticks (Tick alle zwei, alle 3 usw.). Für feingranulare Kontrolle kann dies ein Dictionary sein, das einzelne rrule-Frequenzkonstanten (YEARLY, MONTHLY usw.) ihren eigenen maximalen Tick-Anzahlen zuordnet. Dies kann verwendet werden, um die Anzahl der Ticks entsprechend dem in
AutoDateFormattergewählten Format beizubehalten. Jede nicht in diesem Dictionary angegebene Frequenz erhält einen Standardwert.- interval_multiplesbool, Standard: True
Ob Ticks so gewählt werden sollen, dass sie ein Vielfaches des Intervalls sind und sie an "schönere" Positionen gebunden werden. Zum Beispiel werden dadurch die Ticks auf die Stunden 0, 6, 12, 18 gesetzt, wenn stündliches Ticken in 6-Stunden-Intervallen erfolgt.
- tzstr oder
- nonsingular(vmin, vmax)[Quelle]#
Basierend auf der vorgeschlagenen oberen und unteren Ausdehnung wird der Bereich angepasst, wenn er zu nah an der Singularität liegt (d.h. ein Bereich von ~0).
- tick_values(vmin, vmax)[Quelle]#
Gibt die Werte der lokalisierten Ticks für die gegebenen vmin und vmax zurück.
Hinweis
Um Tick-Positionen mit automatisch definierten vmin- und vmax-Werten für die zugehörige
axiszu erhalten, rufen Sie einfach die Locator-Instanz auf>>> print(type(loc)) <type 'Locator'> >>> print(loc()) [1, 2, 3, 4]
- class matplotlib.dates.ConciseDateConverter(formats=None, zero_formats=None, offset_formats=None, show_offset=True, *, interval_multiples=True)[Quelle]#
Bases:
DateConverter
- class matplotlib.dates.ConciseDateFormatter(locator, tz=None, formats=None, offset_formats=None, zero_formats=None, show_offset=True, *, usetex=None)[Quelle]#
Bases:
FormatterEin
Formatter, der versucht, das beste Format für das Datum zu ermitteln und es so kompakt wie möglich, aber dennoch vollständig zu gestalten. Dies ist am nützlichsten in Verbindung mitAutoDateLocator>>> locator = AutoDateLocator() >>> formatter = ConciseDateFormatter(locator)
- Parameter:
- locator
ticker.Locator Locator, den diese Achse verwendet.
- tzstr oder
tzinfo, Standard:rcParams["timezone"](Standard:'UTC') Zeitzone der Ticks, übergeben an
dates.num2date.- formatsListe von 6 Zeichenketten, optional
Formatstrings für 6 Ebenen der Tick-Beschriftung: hauptsächlich Jahre, Monate, Tage, Stunden, Minuten und Sekunden. Strings verwenden die gleichen Formatcodes wie
strftime. Standard ist['%Y', '%b', '%d', '%H:%M', '%H:%M', '%S.%f']- zero_formatsListe von 6 Zeichenketten, optional
Formatstrings für Tick-Labels, die "Nullen" für eine bestimmte Tick-Ebene sind. Zum Beispiel, wenn die meisten Ticks Monate sind, werden Ticks um den 1. Jan 2005 als "Dez", "2005", "Feb" beschriftet. Standard ist
['', '%Y', '%b', '%b-%d', '%H:%M', '%H:%M']- offset_formatsListe von 6 Zeichenketten, optional
Formatstrings für die 6 Ebenen, die auf die "Offset"-Zeichenkette angewendet werden, die sich auf der rechten Seite einer x-Achse oder der Oberseite einer y-Achse befindet. In Kombination mit den Tick-Labels sollte dies das Datum vollständig spezifizieren. Standard ist
['', '%Y', '%Y-%b', '%Y-%b-%d', '%Y-%b-%d', '%Y-%b-%d %H:%M']
- show_offsetbool, Standard: True
Ob der Offset angezeigt werden soll oder nicht.
- usetexbool, Standard:
rcParams["text.usetex"](Standard:False) Um die Verwendung von TeX's mathematischem Modus für das Rendern der Ergebnisse des Formatters zu aktivieren/deaktivieren.
- locator
Beispiele
Siehe Datums-Ticks mit ConciseDateFormatter formatieren
Automatische Formatierung der Datums-Labels. Das Standardformat wird verwendet, um eine anfängliche Zeichenkette zu bilden, und dann werden redundante Elemente entfernt.
- class matplotlib.dates.DateConverter(*, interval_multiples=True)[Quelle]#
Bases:
ConversionInterfaceKonverter für
datetime.dateunddatetime.datetime-Daten oder für Datums-/Zeitdaten, die so dargestellt werden, wie sie vondate2numkonvertiert würden.Der 'unit'-Tag für solche Daten ist None oder eine
tzinfo-Instanz.- axisinfo(unit, axis)[source]#
Gibt die
AxisInfofür unit zurück.unit ist eine
tzinfo-Instanz oder None. Das Argument axis ist erforderlich, wird aber nicht verwendet.
- class matplotlib.dates.DateFormatter(fmt, tz=None, *, usetex=None)[source]#
Bases:
FormatterFormatiert einen Tick (in Tagen seit der Epoche) mit einer
strftime-Formatzeichenkette.- Parameter:
- fmtstr
strftime-Formatzeichenkette- tzstr oder
tzinfo, Standard:rcParams["timezone"](Standard:'UTC') Zeitzone der Ticks. Wenn es sich um eine Zeichenkette handelt, wird tz an
dateutil.tzübergeben.- usetexbool, Standard:
rcParams["text.usetex"](Standard:False) Um die Verwendung von TeX's mathematischem Modus für das Rendern der Ergebnisse des Formatters zu aktivieren/deaktivieren.
- class matplotlib.dates.DateLocator(tz=None)[source]#
Bases:
LocatorBestimmt die Tick-Positionen beim Plotten von Daten.
Diese Klasse wird von anderen Locators abgeleitet und ist nicht zur alleinigen Verwendung bestimmt.
- Parameter:
- tzstr oder
tzinfo, Standard:rcParams["timezone"](Standard:'UTC') Zeitzone der Ticks. Wenn es sich um eine Zeichenkette handelt, wird tz an
dateutil.tzübergeben.
- tzstr oder
- hms0d = {'byhour': 0, 'byminute': 0, 'bysecond': 0}#
- nonsingular(vmin, vmax)[source]#
Basierend auf der vorgeschlagenen oberen und unteren Ausdehnung wird der Bereich angepasst, wenn er zu nah an der Singularität liegt (d.h. ein Bereich von ~0).
- set_tzinfo(tz)[source]#
Zeitzoneninformationen setzen.
- Parameter:
- tzstr oder
tzinfo, Standard:rcParams["timezone"](Standard:'UTC') Zeitzone der Ticks. Wenn es sich um eine Zeichenkette handelt, wird tz an
dateutil.tzübergeben.
- tzstr oder
- class matplotlib.dates.DayLocator(bymonthday=None, interval=1, tz=None)[source]#
Bases:
RRuleLocatorErzeugt Ticks bei Vorkommen jedes Tages des Monats. Zum Beispiel 1, 15, 30.
- Parameter:
- bymonthdayint oder Liste von int, Standard: alle Tage
Ticks werden an jedem Tag in bymonthday platziert. Standard ist
bymonthday=range(1, 32), d. h. jeder Tag des Monats.- intervalint, Standard: 1
Das Intervall zwischen jeder Iteration. Wenn zum Beispiel
interval=2ist, wird jedes zweite Vorkommen markiert.- tzstr oder
tzinfo, Standard:rcParams["timezone"](Standard:'UTC') Zeitzone der Ticks. Wenn es sich um eine Zeichenkette handelt, wird tz an
dateutil.tzübergeben.
- class matplotlib.dates.HourLocator(byhour=None, interval=1, tz=None)[source]#
Bases:
RRuleLocatorErzeugt Ticks bei Vorkommen jeder Stunde.
- Parameter:
- byhourint oder Liste von int, Standard: alle Stunden
Ticks werden an jeder Stunde in byhour platziert. Standard ist
byhour=range(24), d. h. jede Stunde.- intervalint, Standard: 1
Das Intervall zwischen jeder Iteration. Wenn zum Beispiel
interval=2ist, wird jedes zweite Vorkommen markiert.- tzstr oder
tzinfo, Standard:rcParams["timezone"](Standard:'UTC') Zeitzone der Ticks. Wenn es sich um eine Zeichenkette handelt, wird tz an
dateutil.tzübergeben.
- class matplotlib.dates.MicrosecondLocator(interval=1, tz=None)[source]#
Bases:
DateLocatorErzeugt Ticks in regelmäßigen Intervallen von einer oder mehreren Mikrosekunde(n).
Hinweis
Standardmäßig verwendet Matplotlib eine Gleitkommadarstellung der Zeit in Tagen seit der Epoche. Daher funktioniert das Plotten von Daten mit Mikrosekunden-Zeitauflösung nicht gut für Daten, die weit (ca. 70 Jahre) von der Epoche entfernt sind (prüfen Sie mit
get_epoch).Wenn Sie eine Zeitauflösung unterhalb der Mikrosekunde benötigen, wird dringend empfohlen, Gleitkomma-Sekunden zu verwenden und keine datetime-ähnliche Zeitdarstellung.
Wenn Sie unbedingt datetime.datetime() oder ähnliches verwenden und dennoch Mikrosekundenpräzision benötigen, ändern Sie den Zeitursprung über
dates.set_epochauf etwas, das näher an den geplotteten Daten liegt. Siehe Datumpräzision und Epochen.- Parameter:
- intervalint, Standard: 1
Das Intervall zwischen jeder Iteration. Wenn zum Beispiel
interval=2ist, wird jedes zweite Vorkommen markiert.- tzstr oder
tzinfo, Standard:rcParams["timezone"](Standard:'UTC') Zeitzone der Ticks. Wenn es sich um eine Zeichenkette handelt, wird tz an
dateutil.tzübergeben.
- tick_values(vmin, vmax)[source]#
Gibt die Werte der lokalisierten Ticks für die gegebenen vmin und vmax zurück.
Hinweis
Um Tick-Positionen mit automatisch definierten vmin- und vmax-Werten für die zugehörige
axiszu erhalten, rufen Sie einfach die Locator-Instanz auf>>> print(type(loc)) <type 'Locator'> >>> print(loc()) [1, 2, 3, 4]
- class matplotlib.dates.MinuteLocator(byminute=None, interval=1, tz=None)[source]#
Bases:
RRuleLocatorErzeugt Ticks bei Vorkommen jeder Minute.
- Parameter:
- byminuteint oder Liste von int, Standard: alle Minuten
Ticks werden an jeder Minute in byminute platziert. Standard ist
byminute=range(60), d. h. jede Minute.- intervalint, Standard: 1
Das Intervall zwischen jeder Iteration. Wenn zum Beispiel
interval=2ist, wird jedes zweite Vorkommen markiert.- tzstr oder
tzinfo, Standard:rcParams["timezone"](Standard:'UTC') Zeitzone der Ticks. Wenn es sich um eine Zeichenkette handelt, wird tz an
dateutil.tzübergeben.
- class matplotlib.dates.MonthLocator(bymonth=None, bymonthday=1, interval=1, tz=None)[source]#
Bases:
RRuleLocatorErzeugt Ticks bei Vorkommen jedes Monats, z.B. 1, 3, 12.
- Parameter:
- bymonthint oder Liste von int, Standard: alle Monate
Ticks werden an jedem Monat in bymonth platziert. Standard ist
range(1, 13), d.h. jeder Monat.- bymonthdayint, Standard: 1
Der Tag, an dem die Ticks platziert werden sollen.
- intervalint, Standard: 1
Das Intervall zwischen jeder Iteration. Wenn zum Beispiel
interval=2ist, wird jedes zweite Vorkommen markiert.- tzstr oder
tzinfo, Standard:rcParams["timezone"](Standard:'UTC') Zeitzone der Ticks. Wenn es sich um eine Zeichenkette handelt, wird tz an
dateutil.tzübergeben.
- class matplotlib.dates.RRuleLocator(o, tz=None)[source]#
Bases:
DateLocator- Parameter:
- tzstr oder
tzinfo, Standard:rcParams["timezone"](Standard:'UTC') Zeitzone der Ticks. Wenn es sich um eine Zeichenkette handelt, wird tz an
dateutil.tzübergeben.
- tzstr oder
- tick_values(vmin, vmax)[source]#
Gibt die Werte der lokalisierten Ticks für die gegebenen vmin und vmax zurück.
Hinweis
Um Tick-Positionen mit automatisch definierten vmin- und vmax-Werten für die zugehörige
axiszu erhalten, rufen Sie einfach die Locator-Instanz auf>>> print(type(loc)) <type 'Locator'> >>> print(loc()) [1, 2, 3, 4]
- class matplotlib.dates.SecondLocator(bysecond=None, interval=1, tz=None)[source]#
Bases:
RRuleLocatorErzeugt Ticks bei Vorkommen jeder Sekunde.
- Parameter:
- bysecondint oder Liste von int, Standard: alle Sekunden
Ticks werden an jeder Sekunde in bysecond platziert. Standard ist
bysecond = range(60), d. h. jede Sekunde.- intervalint, Standard: 1
Das Intervall zwischen jeder Iteration. Wenn zum Beispiel
interval=2ist, wird jedes zweite Vorkommen markiert.- tzstr oder
tzinfo, Standard:rcParams["timezone"](Standard:'UTC') Zeitzone der Ticks. Wenn es sich um eine Zeichenkette handelt, wird tz an
dateutil.tzübergeben.
- class matplotlib.dates.WeekdayLocator(byweekday=1, interval=1, tz=None)[source]#
Bases:
RRuleLocatorErzeugt Ticks bei Vorkommen jedes Wochentags.
- Parameter:
- byweekdayint oder Liste von int, Standard: alle Tage
Ticks werden an jedem Wochentag in byweekday platziert. Standard ist jeder Tag.
Elemente von byweekday müssen MO, TU, WE, TH, FR, SA, SU sein, die Konstanten aus
dateutil.rrule, die in den Namespacematplotlib.datesimportiert wurden.- intervalint, Standard: 1
Das Intervall zwischen jeder Iteration. Wenn zum Beispiel
interval=2ist, wird jedes zweite Vorkommen markiert.- tzstr oder
tzinfo, Standard:rcParams["timezone"](Standard:'UTC') Zeitzone der Ticks. Wenn es sich um eine Zeichenkette handelt, wird tz an
dateutil.tzübergeben.
- class matplotlib.dates.YearLocator(base=1, month=1, day=1, tz=None)[source]#
Bases:
RRuleLocatorErzeugt Ticks an einem gegebenen Tag jedes Jahres, der ein Vielfaches von base ist.
Beispiele
# Tick every year on Jan 1st locator = YearLocator() # Tick every 5 years on July 4th locator = YearLocator(5, month=7, day=4)
- Parameter:
- baseint, Standard: 1
Markiert Ticks alle base Jahre.
- monthint, Standard: 1
Der Monat, an dem die Ticks platziert werden sollen, beginnend bei 1. Standard ist Januar.
- dayint, Standard: 1
Der Tag, an dem die Ticks platziert werden sollen.
- tzstr oder
tzinfo, Standard:rcParams["timezone"](Standard:'UTC') Zeitzone der Ticks. Wenn es sich um eine Zeichenkette handelt, wird tz an
dateutil.tzübergeben.
- matplotlib.dates.date2num(d)[source]#
Konvertiert datetime-Objekte in Matplotlib-Daten.
- Parameter:
- d
datetime.datetimeodernumpy.datetime64oder Folgen davon
- d
- Gibt zurück:
- float oder Folge von Floats
Anzahl der Tage seit der Epoche. Siehe
get_epochfür die Epoche, die durchrcParams["date.epoch"](Standard:'1970-01-01T00:00:00') oderset_epochgeändert werden kann. Wenn die Epoche "1970-01-01T00:00:00" (Standard) ist, gibt Mittag des 1. Jan. 1970 ("1970-01-01T12:00:00") 0,5 zurück.
Anmerkungen
Es wird der gregorianische Kalender angenommen; dies ist keine universelle Praxis. Details siehe Modul-Docstring.
- matplotlib.dates.datestr2num(d, default=None)[source]#
Konvertiert einen Datumsstring mithilfe von
dateutil.parser.parsein eine Datumszahl.- Parameter:
- dstr oder Folge von str
Die zu konvertierenden Daten.
- defaultdatetime.datetime, optional
Das Standarddatum, das verwendet wird, wenn Felder in d fehlen.
- matplotlib.dates.drange(dstart, dend, delta)[source]#
Gibt eine Sequenz von gleichmäßig verteilten Matplotlib-Daten zurück.
Die Daten beginnen bei dstart und gehen bis, aber nicht einschließlich, dend. Sie sind durch delta getrennt.
- Parameter:
- dstart, dend
datetime Die Datengrenzen.
- delta
datetime.timedelta Abstand der Daten.
- dstart, dend
- Gibt zurück:
numpy.arrayEine Liste von Gleitkommazahlen, die Matplotlib-Daten darstellen.
- matplotlib.dates.get_epoch()[source]#
Ruft die von
datesverwendete Epoche ab.- Gibt zurück:
- epochstr
Zeichenkette für die Epoche (parsbar durch
numpy.datetime64).
- matplotlib.dates.num2date(x, tz=None)[source]#
Konvertiert Matplotlib-Daten in
datetime-Objekte.- Parameter:
- xfloat oder Folge von Floats
Anzahl der Tage (der Bruchteil repräsentiert Stunden, Minuten, Sekunden) seit der Epoche. Siehe
get_epochfür die Epoche, die durchrcParams["date.epoch"](Standard:'1970-01-01T00:00:00') oderset_epochgeändert werden kann.- tzstr oder
tzinfo, Standard:rcParams["timezone"](Standard:'UTC') Zeitzone von x. Wenn es eine Zeichenkette ist, wird tz an
dateutil.tzübergeben.
- Gibt zurück:
Anmerkungen
Es wird der gregorianische Kalender angenommen; dies ist keine universelle Praxis. Details siehe Modul-Docstring.
- matplotlib.dates.num2timedelta(x)[source]#
Konvertiert eine Anzahl von Tagen in ein
timedelta-Objekt.Wenn x eine Folge ist, wird eine Folge von
timedelta-Objekten zurückgegeben.- Parameter:
- xfloat, Folge von Floats
Anzahl der Tage. Der Bruchteil repräsentiert Stunden, Minuten, Sekunden.
- Gibt zurück:
datetime.timedeltaoder Liste[datetime.timedelta]
- class matplotlib.dates.relativedelta(dt1=None, dt2=None, years=0, months=0, days=0, leapdays=0, weeks=0, hours=0, minutes=0, seconds=0, microseconds=0, year=None, month=None, day=None, weekday=None, yearday=None, nlyearday=None, hour=None, minute=None, second=None, microsecond=None)#
Bases:
objectDer Typ relativedelta ist dazu bestimmt, auf ein vorhandenes Datum und eine vorhandene Uhrzeit angewendet zu werden und kann bestimmte Komponenten dieses Datums und dieser Uhrzeit ersetzen oder ein Zeitintervall darstellen.
Er basiert auf der Spezifikation der exzellenten Arbeit von M.-A. Lemburg in seiner mx.DateTime-Erweiterung. Beachten Sie jedoch, dass dieser Typ NICHT den gleichen Algorithmus wie seine Arbeit implementiert. Erwarten Sie NICHT, dass er sich wie das Gegenstück von mx.DateTime verhält.
Es gibt zwei verschiedene Möglichkeiten, eine relativedelta-Instanz zu erstellen. Die erste besteht darin, ihr zwei Datums-/Uhrzeitklassen zu übergeben.
relativedelta(datetime1, datetime2)
Die zweite besteht darin, ihr eine beliebige Anzahl der folgenden Schlüsselwortargumente zu übergeben.
relativedelta(arg1=x,arg2=y,arg3=z...) year, month, day, hour, minute, second, microsecond: Absolute information (argument is singular); adding or subtracting a relativedelta with absolute information does not perform an arithmetic operation, but rather REPLACES the corresponding value in the original datetime with the value(s) in relativedelta. years, months, weeks, days, hours, minutes, seconds, microseconds: Relative information, may be negative (argument is plural); adding or subtracting a relativedelta with relative information performs the corresponding arithmetic operation on the original datetime value with the information in the relativedelta. weekday: One of the weekday instances (MO, TU, etc) available in the relativedelta module. These instances may receive a parameter N, specifying the Nth weekday, which could be positive or negative (like MO(+1) or MO(-2)). Not specifying it is the same as specifying +1. You can also use an integer, where 0=MO. This argument is always relative e.g. if the calculated date is already Monday, using MO(1) or MO(-1) won't change the day. To effectively make it absolute, use it in combination with the day argument (e.g. day=1, MO(1) for first Monday of the month). leapdays: Will add given days to the date found, if year is a leap year, and the date found is post 28 of february. yearday, nlyearday: Set the yearday or the non-leap year day (jump leap days). These are converted to day/month/leapdays information.
Es gibt relative und absolute Formen der Schlüsselwortargumente. Die Pluralform ist relativ, und die Singularform ist absolut. Für jedes Argument in der folgenden Reihenfolge wird zuerst die absolute Form angewendet (indem jedes Attribut auf diesen Wert gesetzt wird) und dann die relative Form (indem der Wert zum Attribut addiert wird).
Die Reihenfolge der Attribute, die berücksichtigt werden, wenn diese relativedelta zu einem Datum und einer Uhrzeit addiert wird, ist:
Jahr
Monat
Tag
Stunden
Minuten
Sekunden
Mikrosekunden
Schließlich wird der Wochentag gemäß der oben beschriebenen Regel angewendet.
Zum Beispiel
>>> from datetime import datetime >>> from dateutil.relativedelta import relativedelta, MO >>> dt = datetime(2018, 4, 9, 13, 37, 0) >>> delta = relativedelta(hours=25, day=1, weekday=MO(1)) >>> dt + delta datetime.datetime(2018, 4, 2, 14, 37)
Zuerst wird der Tag auf 1 (der erste des Monats) gesetzt, dann werden 25 Stunden addiert, um zum 2. Tag und zur 14. Stunde zu gelangen. Schließlich wird der Wochentag angewendet, aber da der 2. bereits ein Montag ist, hat dies keine Auswirkung.
- normalized()#
Gibt eine Version dieses Objekts zurück, die vollständig durch Ganzzahlen für die relativen Attribute dargestellt wird.
>>> relativedelta(days=1.5, hours=2).normalized() relativedelta(days=+1, hours=+14)
- Gibt zurück:
Gibt ein
dateutil.relativedelta.relativedelta-Objekt zurück.
- property weeks#
- class matplotlib.dates.rrulewrapper(freq, tzinfo=None, **kwargs)[source]#
Bases:
objectEin einfacher Wrapper um ein
dateutil.rrule, das flexible Datumsticken-Spezifikationen ermöglicht.- Parameter:
- freq{YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, SECONDLY}
Tick-Frequenz. Diese Konstanten sind in
dateutil.rruledefiniert, sind aber auch vonmatplotlib.datesaus zugänglich.- tzinfo
datetime.tzinfo, optional Zeitzoneninformationen. Der Standardwert ist None.
- **kwargs
Zusätzliche Schlüsselwortargumente werden an das
dateutil.rruleübergeben.
- matplotlib.dates.set_epoch(epoch)[source]#
Legt die Epoche (Ursprung für Daten) für Datumsberechnungen fest.
Die Standardepoche ist
rcParams["date.epoch"](Standard:'1970-01-01T00:00:00').Wenn Mikrosekunden-Genauigkeit gewünscht ist, muss das zu plottende Datum innerhalb von etwa 70 Jahren nach der Epoche liegen. Matplotlib stellt Daten intern als Tage seit der Epoche dar, daher muss der dynamische Bereich der Fließkommazahlen innerhalb eines Faktors von 2^52 liegen.
set_epochmuss aufgerufen werden, bevor Daten konvertiert werden (d. h. nahe dem Import-Abschnitt), sonst wird ein RuntimeError ausgelöst.Siehe auch Datumsgenauigkeit und Epochen.
- Parameter:
- epochstr
Gültiges UTC-Datum, das von
numpy.datetime64analysierbar ist (keine Zeitzone enthalten).