Ich hab einen Datensatz dessen Index als 'Europe/Paris' definiert ist; dtype='datetime64[ns, Europe/Paris]'
Der Datensatz kann richtig nach Zeiten geschnitten werden; Datensatz.between_time(''01:00am', '02.00am)).
ABER werden die Werte mittels Matplotlib aufgetragen, so sind sie um 2 Stunden versetzt, also zeigt die X-Achse 23:00 bis 24:00 Uhr an, anstatt 1:00 usw..
Leider ist es mir nicht gelungen die Zeitzone im Code zu definieren (tz = 'Europe/Paris'), hier bekomme ich diverse Fehler, bsp: "'Line2D' object has no property 'tz'"
Ich konnte das Problem lösen indem ich die Default Einstellungen der 'matplotlibrc' geändert habe. Diese Lösung gefällt mir aber nicht :/
Somit hab ich drei Fragen

- Wie kann ich direkt beim Auftragen der Daten darauf hinweisen, dass diese bereits 'Europe/Paris' sind?
- Warum habe ich zwei Stunden unterschied zu UTC, wo es aktuell im Winter nur 1 Stunde sein sollte?
- Mache ich generell etwas ungeschicktes?
Code: Alles auswählen
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.dates as mdates
datum = [1666610933160, 1666610933160, 1666610935175, 1666610935175, 1666611168999]
wert = np.linspace(0,10,len(datum))
beispiel = pd.DataFrame(data=wert, index=datum)
beispiel.index = pd.to_datetime(beispiel.index, unit='ms', utc=True).map(lambda x: x.tz_convert('Europe/Paris'))
fig, ax = plt.subplots()
ax.plot(beispiel, 'xr')
ax.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M'))
plt.xticks(rotation = 90)
b = ['echte X-Achsenwerte:']
for k in beispiel.index:
a = str(k)[:19]
b.append(a)
idx_als_str_liste = '\n'.join(b)
fig.text(0.7,0.5, idx_als_str_liste, horizontalalignment='left', verticalalignment='center', fontsize = '16')