Wenn ich ein Zeitreihendiagramm mit Python-Plot zeichne, funktioniert die Datumskonvertierung nicht ordnungsgemäß. Beispielsweise wird 2020-01-01 fälschlicherweise als 0051-01-01 angezeigt.
Zeigen Sie das Diagramm mit dem Befehl "Data frame.plot (...)" für den von Pandas generierten Datenrahmen an und verwenden Sie "mdates.DateFormatter ('% Y-% m-% d')", um "YMD zu formatieren". Ich habe festgestellt, dass das Datum nicht korrekt angezeigt wird, wenn ich es einstelle. Wenn ich den folgenden Code ausführe, wird das Datum auf der horizontalen Achse nicht korrekt angezeigt.
/home/sampletest/sample.py
import datetime
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import seaborn as sns
#Definieren Sie einen Datensatz.(Das Datum ist Datum / Uhrzeit.Beschreiben Sie in datetime. Notiert im Datumstyp)
dat = [
[datetime.datetime(2020,1,1),4,10],
[datetime.datetime(2020,1,2),7,7],
[datetime.datetime(2020,1,3),10,4],
[datetime.datetime(2020,1,4),13,2],
[datetime.datetime(2020,1,5),17,1],
[datetime.datetime(2020,1,6),12,4],
[datetime.datetime(2020,1,7),9,3],
[datetime.datetime(2020,1,8),7,8],
[datetime.datetime(2020,1,9),5,9],
[datetime.datetime(2020,1,10),3,12],
]
dat=pd.DataFrame(dat,columns=["DATE","Y","Z"])
dat.set_index("DATE",inplace=True) #Stellen Sie das auf der horizontalen Achse angezeigte Datum auf den Index des DataFrame ein.
print(dat)
fig = sns.mpl.pyplot.figure() #Erstellen Sie ein Objekt, um das Diagramm zu zeichnen.
ax=dat.plot(marker="o",figsize=(15, 5)) #Dataframe.Das Zeichnen eines Diagramms im Plotformat führt zu einem Fehler
ax.legend() #Zeichne eine Legende
#Einstellungen für das Grafikformat(Stellen Sie die Datumsanzeigemethode auf der horizontalen Achse ein.)
days = mdates.DayLocator(bymonthday=None, interval=2, tz=None) #Horizontale Achse: "Täglich" wird angezeigt.(Ohne diese Zeile wird das Datum dupliziert)
daysFmt = mdates.DateFormatter('%Y-%m-%d') #Horizontale Achse: Format Y.-M-Auf D setzen.
ax.xaxis.set_major_locator(days) #Zeigen Sie das Datum auf der horizontalen Achse an.
ax.xaxis.set_major_formatter(daysFmt) #Zeigen Sie das Datum auf der horizontalen Achse an.
fig.autofmt_xdate() #Das Datum auf der horizontalen Achse ist geneigt, damit es leicht zu sehen ist.
#Geben Sie dem Diagramm einen Namen
ax.set_xlabel('Date') #Stellen Sie den Titel der X-Achse ein
ax.set_ylabel('Y') #Stellen Sie den Titel der Y-Achse ein
plt.title(r"TEST",fontname="MS Gothic") #Legen Sie den Titel des Diagramms fest. Bei der Angabe von Japanisch muss der Schriftname angegeben werden
#Stellen Sie die Größe des Diagramms ein
fig.set_figheight(10)
fig.set_figwidth(20)
#Stellen Sie den Anzeigebereich auf der horizontalen Achse ein
ax.set_xlim(datetime.datetime(2020,1,1), datetime.datetime(2020,1,12))
Es ist erforderlich, die Datumszeile des Datenrahmens von Datum / Uhrzeit auf Matplotlib-Datum zu ändern.
Fügen Sie dat ['DATE'] = mdates.date2num (dat ['DATE']) hinzu.
/home/sampletest/sample.py
import datetime
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import seaborn as sns
import pandas as pd
#Definieren Sie einen Datensatz.(Das Datum ist Datum / Uhrzeit.Beschreiben Sie in datetime. Notiert im Datumstyp)
dat = [
[datetime.datetime(2020,1,1),4,10],
[datetime.datetime(2020,1,2),7,7],
[datetime.datetime(2020,1,3),10,4],
[datetime.datetime(2020,1,4),13,2],
[datetime.datetime(2020,1,5),17,1],
[datetime.datetime(2020,1,6),12,4],
[datetime.datetime(2020,1,7),9,3],
[datetime.datetime(2020,1,8),7,8],
[datetime.datetime(2020,1,9),5,9],
[datetime.datetime(2020,1,10),3,12],
]
dat=pd.DataFrame(dat,columns=["DATE","Y","Z"])
dat['DATE'] = mdates.date2num(dat['DATE']) #Hier hinzufügen Konvertieren Sie datetime-Objekte in Matplotlib-Daten.
dat.set_index("DATE",inplace=True) #Stellen Sie das auf der horizontalen Achse angezeigte Datum auf den Index des DataFrame ein.
print(dat)
fig = sns.mpl.pyplot.figure() #Erstellen Sie ein Objekt, um das Diagramm zu zeichnen.
ax=dat.plot(marker="o",figsize=(15, 5))
ax.legend() #Zeichne eine Legende
#Einstellungen für das Grafikformat(Stellen Sie die Datumsanzeigemethode auf der horizontalen Achse ein.)
days = mdates.DayLocator(bymonthday=None, interval=2, tz=None) #Horizontale Achse: "Täglich" wird angezeigt.(Ohne diese Zeile wird das Datum dupliziert)
daysFmt = mdates.DateFormatter('%Y-%m-%d') #Horizontale Achse: Format Y.-M-Auf D setzen.
ax.xaxis.set_major_locator(days) #Zeigen Sie das Datum auf der horizontalen Achse an.
ax.xaxis.set_major_formatter(daysFmt) #Zeigen Sie das Datum auf der horizontalen Achse an.
fig.autofmt_xdate() #Das Datum auf der horizontalen Achse ist geneigt, damit es leicht zu sehen ist.
#Geben Sie dem Diagramm einen Namen
ax.set_xlabel('Date') #Stellen Sie den Titel der X-Achse ein
ax.set_ylabel('Y') #Stellen Sie den Titel der Y-Achse ein
plt.title(r"TEST",fontname="MS Gothic") #Legen Sie den Titel des Diagramms fest. Bei der Angabe von Japanisch muss der Schriftname angegeben werden
#Stellen Sie die Größe des Diagramms ein
fig.set_figheight(10)
fig.set_figwidth(20)
#Stellen Sie den Anzeigebereich auf der horizontalen Achse ein
ax.set_xlim(datetime.datetime(2020,1,1), datetime.datetime(2020,1,12))
Recommended Posts