[PYTHON] Das Datum wird in matplotlib falsch angezeigt.

1 Beschreibung dieses Artikels

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.

80.JPG

2 Code, bei dem das Datum auf der horizontalen Achse falsch angezeigt wird

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)) 

3 Code zur korrekten Anzeige des Datums auf der horizontalen Achse

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)) 
81.JPG

Recommended Posts

Das Datum wird in matplotlib falsch angezeigt.
Wechseln Sie die in Django 1.9 angezeigte Sprache
Der erste Schritt von Python Matplotlib
Was tun, wenn das Bild nicht mit matplotlib usw. im Docker-Container angezeigt wird?
[Python] Der von Openpyxl geschriebene Wert wird als Exponent (E) angezeigt.
Geben Sie die Farbe in der matplotlib 2D-Karte an
Was ist "Mahjong" in der Python-Bibliothek? ??
Wenn das Ziel Ubuntu 16.04 in Ansible ist
Gibt es NaN im Pandas DataFrame?
Das Datum wird in matplotlib falsch angezeigt.
PyQtGraph ist möglicherweise nicht im Interpreter verfügbar.
Auch wenn die Entwicklungssprache in Cloud9 in Python3 geändert wird, wird Version 2 in Python - Version angezeigt
Pipfile wird nicht im aktuellen Verzeichnis erstellt
Was ist im Docker Python-Image pfeifend?
Über den Unterschied zwischen "==" und "is" in Python
Wenn sich Achse und Beschriftung in matplotlib überlappen
Was tun, wenn nur das Fenster angezeigt wird und im Pygame nichts angezeigt wird?
Überprüfen Sie, ob die Zeichenfolge eine Zahl in Python ist
Wenn das ausgewählte Objekt in bpy.context.selected_objects nicht zurückgegeben wird
Linux ist in erster Linie so etwas
Lassen Sie die Häkchen nach dem Dezimalpunkt in matplotlib weg
Was ist das Domain-Attribut, das in Plotlys Layout geschrieben ist?
Überprüfen Sie, ob es sich um Unix in der Skriptsprache handelt
Setzen Sie DateField des Formulars in Django auf type = date
[Tipps] Speichern / kopieren Sie das in Jupyter Lab angezeigte Diagramm
Suchen Sie den Teil 575 aus Wikipedia in Python
Einbetten in datetime, wenn nur die Zeit bekannt ist
Wenn "FEHLER: HTTP wird nicht unterstützt" in mpsyt angezeigt wird
Legen Sie matplotlib in Centos7.
Datumsmanipulation in Python
Bilder mit Matplotlib anzeigen
Das Bild wird in der lokalen Entwicklungsumgebung angezeigt, aber das Bild wird nicht auf dem Remote-Server von VPS angezeigt.
2D-Plot in Matplotlib
Holen Sie sich Datum in Python
Berechnen Sie das Datum mit Python
[Python] Teilen Sie das Datum
Berechnen Sie Daten in Python
Test.py wird auf dem Webserver in Python3 nicht angezeigt.
Verfahren, die durchgeführt werden müssen, wenn Japanisch nicht in matplotlib angezeigt wird
[Pandas] Wenn sich die Daten der ersten Zeile im Header von DataFrame befinden
Das Graustufenbild wird in OpenCV / Python als Farbbild angezeigt
SVG-Diagramm mit matplotlib mit Heroku erstellen (auf Japanisch angezeigt)
Holen Sie sich automatisch den Port, an dem Arduino in Python steckt
Holen Sie sich das aktuelle Datum und die aktuelle Uhrzeit in Python unter Berücksichtigung des Zeitunterschieds
Gibt es eine Verzerrung in den Zahlen, die in den Fibonacci-Zahlen erscheinen?
Finden Sie heraus, wie viele Zeichen sich in der Zeichenfolge befinden.
Wenn in python3 manage.py makemigrations "Keine Änderungen erkannt" angezeigt wird
Wie man in Django die angezeigte lange Zeichenkette in der Mitte abkürzt ....
Ändern Sie die Meldung, die beim Anmelden bei Raspberry Pi angezeigt wird
Hinweise zur Farbfärbung im Matplotlib-Streudiagramm
In der Flatpak-Anwendung kann kein Japanisch eingegeben werden. Die Ursache ist Fcitx.