matplotlib.dates#

Inheritance diagram of 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)

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

datestr2num

Konvertiert einen Datumsstring mithilfe von dateutil.parser.parse in eine Datumszahl.

date2num

Konvertiert datetime-Objekte in Matplotlib-Daten.

num2date

Konvertiert Matplotlib-Daten in datetime-Objekte.

num2timedelta

Konvertiert eine Anzahl von Tagen in ein timedelta-Objekt.

drange

Gibt eine Sequenz von gleichmäßig verteilten Matplotlib-Daten zurück.

set_epoch

Legt die Epoche (Ursprung für Daten) für Datumsberechnungen fest.

get_epoch

Ruft die von dates verwendete Epoche ab.

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

Datums-Formatierer#

Die verfügbaren Datums-Formatierer sind

class matplotlib.dates.AutoDateFormatter(locator, tz=None, defaultfmt='%Y-%m-%d', *, usetex=None)[Quelle]#

Bases: Formatter

Ein Formatter, der versucht, das beste Format zu ermitteln. Dies ist am nützlichsten in Verbindung mit AutoDateLocator.

AutoDateFormatter hat ein .scale-Dictionary, das Tick-Skalen (das Intervall in Tagen zwischen einem Haupt-Tick) auf Formatstrings abbildet; dieses Dictionary ist standardmäßig

self.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:
locatorticker.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.scaled größer ist als die von locator._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.scaled als Funktionen festgelegt sind, liegt es an der benutzerdefinierten Funktion, den TeX-Mathematikmodus selbst zu aktivieren oder zu deaktivieren.

class matplotlib.dates.AutoDateLocator(tz=None, minticks=5, maxticks=None, interval_multiples=True)[Quelle]#

Bases: DateLocator

Bei 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.rrule definiert 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 AutoDateFormatter gewä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.

get_locator(dmin, dmax)[Quelle]#

Wählt den besten Locator basierend auf einer Entfernung aus.

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 axis zu 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

axisinfo(unit, axis)[Quelle]#

Gibt die AxisInfo für unit zurück.

unit ist eine tzinfo-Instanz oder None. Das Argument axis ist erforderlich, wird aber nicht verwendet.

class matplotlib.dates.ConciseDateFormatter(locator, tz=None, formats=None, offset_formats=None, zero_formats=None, show_offset=True, *, usetex=None)[Quelle]#

Bases: Formatter

Ein 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 mit AutoDateLocator

>>> locator = AutoDateLocator()
>>> formatter = ConciseDateFormatter(locator)
Parameter:
locatorticker.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.

Beispiele

Siehe Datums-Ticks mit ConciseDateFormatter formatieren

(Quellcode, 2x.png, png)

Automatische Formatierung der Datums-Labels. Das Standardformat wird verwendet, um eine anfängliche Zeichenkette zu bilden, und dann werden redundante Elemente entfernt.

format_data_short(value)[Quelle]#

Gibt eine kurze Zeichenkettenversion des Tick-Werts zurück.

Standardmäßig der positionsunabhängige lange Wert.

format_ticks(values)[Quelle]#

Gibt die Tick-Beschriftungen für alle Ticks auf einmal zurück.

get_offset()[Quelle]#
class matplotlib.dates.DateConverter(*, interval_multiples=True)[Quelle]#

Bases: ConversionInterface

Konverter für datetime.date und datetime.datetime-Daten oder für Datums-/Zeitdaten, die so dargestellt werden, wie sie von date2num konvertiert würden.

Der 'unit'-Tag für solche Daten ist None oder eine tzinfo-Instanz.

axisinfo(unit, axis)[source]#

Gibt die AxisInfo für unit zurück.

unit ist eine tzinfo-Instanz oder None. Das Argument axis ist erforderlich, wird aber nicht verwendet.

static convert(value, unit, axis)[source]#

Wenn value nicht bereits eine Zahl oder eine Zahlenfolge ist, wird es mit date2num konvertiert.

Die Argumente unit und axis werden nicht verwendet.

static default_units(x, axis)[source]#

Gibt die tzinfo-Instanz von x oder seines ersten Elements zurück, oder None

class matplotlib.dates.DateFormatter(fmt, tz=None, *, usetex=None)[source]#

Bases: Formatter

Formatiert 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.

set_tzinfo(tz)[source]#
class matplotlib.dates.DateLocator(tz=None)[source]#

Bases: Locator

Bestimmt 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.

datalim_to_dt()[source]#

Konvertiert das Datenintervall der Achse in datetime-Objekte.

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.

viewlim_to_dt()[source]#

Konvertiert das Ansichtsintervall in datetime-Objekte.

class matplotlib.dates.DayLocator(bymonthday=None, interval=1, tz=None)[source]#

Bases: RRuleLocator

Erzeugt 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=2 ist, 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: RRuleLocator

Erzeugt 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=2 ist, 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: DateLocator

Erzeugt 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_epoch auf 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=2 ist, 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.

set_axis(axis)[source]#
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 axis zu 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: RRuleLocator

Erzeugt 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=2 ist, 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: RRuleLocator

Erzeugt 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=2 ist, 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.

static get_unit_generic(freq)[source]#
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 axis zu 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: RRuleLocator

Erzeugt 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=2 ist, 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: RRuleLocator

Erzeugt 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 Namespace matplotlib.dates importiert wurden.

intervalint, Standard: 1

Das Intervall zwischen jeder Iteration. Wenn zum Beispiel interval=2 ist, 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: RRuleLocator

Erzeugt 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:
ddatetime.datetime oder numpy.datetime64 oder Folgen davon
Gibt zurück:
float oder Folge von Floats

Anzahl der Tage seit der Epoche. Siehe get_epoch für die Epoche, die durch rcParams["date.epoch"] (Standard: '1970-01-01T00:00:00') oder set_epoch geä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.parse in 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, denddatetime

Die Datengrenzen.

deltadatetime.timedelta

Abstand der Daten.

Gibt zurück:
numpy.array

Eine Liste von Gleitkommazahlen, die Matplotlib-Daten darstellen.

matplotlib.dates.get_epoch()[source]#

Ruft die von dates verwendete 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_epoch für die Epoche, die durch rcParams["date.epoch"] (Standard: '1970-01-01T00:00:00') oder set_epoch geä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:
datetime oder Folge von datetime

Daten werden in der Zeitzone tz zurückgegeben.

Wenn x eine Folge ist, wird eine Folge von datetime-Objekten zurückgegeben.

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.timedelta oder 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: object

Der 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:

  1. Jahr

  2. Monat

  3. Tag

  4. Stunden

  5. Minuten

  6. Sekunden

  7. 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: object

Ein 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.rrule definiert, sind aber auch von matplotlib.dates aus zugänglich.

tzinfodatetime.tzinfo, optional

Zeitzoneninformationen. Der Standardwert ist None.

**kwargs

Zusätzliche Schlüsselwortargumente werden an das dateutil.rrule übergeben.

set(**kwargs)[source]#

Setzt Parameter für einen vorhandenen Wrapper.

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_epoch muss 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.datetime64 analysierbar ist (keine Zeitzone enthalten).