Einführung
Dieses Labor zielt darauf ab, ein Verständnis davon zu vermitteln, wie man die verschiedenen Datumstaktgeber und -formatter in Matplotlib verwendet. In diesem Tutorial wird gezeigt, wie man diese Funktionen verwendet, um die X-Achse eines Diagramms mit zeitbasierten Daten anzupassen.
Tipps für die VM
Nachdem der VM-Start abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu öffnen.
Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund von Einschränkungen in Jupyter Notebook nicht automatisiert werden.
Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.
Importieren der erforderlichen Bibliotheken
Wir beginnen mit dem Importieren der erforderlichen Bibliotheken für dieses Tutorial. Wir werden matplotlib und numpy verwenden.
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.dates import (
FR, MO, MONTHLY, SA, SU, TH, TU, WE, AutoDateFormatter, AutoDateLocator,
ConciseDateFormatter, DateFormatter, DayLocator, HourLocator,
MicrosecondLocator, MinuteLocator, MonthLocator, RRuleLocator, SecondLocator,
WeekdayLocator, YearLocator, rrulewrapper)
import matplotlib.ticker as ticker
Definieren der Taktgeber und Formatter
Wir definieren die verschiedenen Taktgeber und Formatter, die wir verwenden werden. Dieses Beispiel verwendet die folgenden Taktgeber:
AutoDateLocator(maxticks=8)YearLocator(month=4)MonthLocator(bymonth=[4, 8, 12])DayLocator(interval=180)WeekdayLocator(byweekday=SU, interval=4)HourLocator(byhour=range(0, 24, 6))MinuteLocator(interval=15)SecondLocator(bysecond=(0, 30))MicrosecondLocator(interval=1000)RRuleLocator(rrulewrapper(freq=MONTHLY, byweekday=(MO, TU, WE, TH, FR), bysetpos=-1))
Und die folgenden Formatter:
AutoDateFormatter(ax.xaxis.get_major_locator())ConciseDateFormatter(ax.xaxis.get_major_locator())DateFormatter("%b %Y")
locators = [
('AutoDateLocator(maxticks=8)', '2003-02-01', '%Y-%m'),
('YearLocator(month=4)', '2003-02-01', '%Y-%m'),
('MonthLocator(bymonth=[4, 8, 12])', '2003-02-01', '%Y-%m'),
('DayLocator(interval=180)', '2003-02-01', '%Y-%m-%d'),
('WeekdayLocator(byweekday=SU, interval=4)', '2000-07-01', '%a %Y-%m-%d'),
('HourLocator(byhour=range(0, 24, 6))', '2000-02-04', '%H h'),
('MinuteLocator(interval=15)', '2000-02-01 02:00', '%H:%M'),
('SecondLocator(bysecond=(0, 30))', '2000-02-01 00:02', '%H:%M:%S'),
('MicrosecondLocator(interval=1000)', '2000-02-01 00:00:00.005', '%S.%f'),
('RRuleLocator(rrulewrapper(freq=MONTHLY, byweekday=(MO, TU, WE, TH, FR), '
'bysetpos=-1))', '2000-07-01', '%Y-%m-%d'),
]
formatters = [
'AutoDateFormatter(ax.xaxis.get_major_locator())',
'ConciseDateFormatter(ax.xaxis.get_major_locator())',
'DateFormatter("%b %Y")',
]
Zeichnen der Graphen
Jetzt können wir unsere Graphen erstellen. Wir werden zwei Teilgraphen erstellen, um die Taktgeber und Formatter separat zu demonstrieren. Für jeden Taktgeber und Formatter zeichnen wir einen Graphen, der zeigt, wie er die X-Achse beeinflusst. Wir verwenden die plot_axis-Funktion dazu. Diese Funktion setzt die gemeinsamen Parameter für jede Achse, wie die Stiele, die Taktparameter und die Grenzen. Sie setzt auch den Taktgeber und den Formatter für die X-Achse.
def plot_axis(ax, locator=None, xmax='2002-02-01', fmt=None, formatter=None):
ax.spines[['left', 'right', 'top']].set_visible(False)
ax.yaxis.set_major_locator(ticker.NullLocator())
ax.tick_params(which='major', width=1.00, length=5)
ax.tick_params(which='minor', width=0.75, length=2.5)
ax.set_xlim(np.datetime64('2000-02-01'), np.datetime64(xmax))
if locator:
ax.xaxis.set_major_locator(eval(locator))
ax.xaxis.set_major_formatter(DateFormatter(fmt))
else:
ax.xaxis.set_major_formatter(eval(formatter))
ax.text(0.0, 0.2, locator or formatter, transform=ax.transAxes,
fontsize=14, fontname='Monospace', color='tab:blue')
fig, axs = plt.subplots(len(locators), 1, figsize=(8, len(locators) *.8),
layout='constrained')
fig.suptitle('Date Locators')
for ax, (locator, xmax, fmt) in zip(axs, locators):
plot_axis(ax, locator, xmax, fmt)
fig, axs = plt.subplots(len(formatters), 1, figsize=(8, len(formatters) *.8),
layout='constrained')
fig.suptitle('Date Formatters')
for ax, fmt in zip(axs, formatters):
plot_axis(ax, formatter=fmt)
Anzeigen der Graphen
Schließlich können wir die Graphen mit der plt.show()-Funktion anzeigen.
plt.show()
Zusammenfassung
In diesem Tutorial haben wir gelernt, wie man die verschiedenen Datumstaktgeber und -formatter in Matplotlib verwendet. Wir haben mehrere Graphen gezeichnet, die gezeigt haben, wie jeder Taktgeber und Formatter die X-Achse eines Graphen mit zeitbasierten Daten beeinflusst. Dieses Wissen kann nützlich sein, wenn man Visualisierungen von Zeitreihendaten erstellt.