Dieser Artikel ist der 22. Tagesartikel von MicroAd Adventskalender 2019.
Zeitreihendiagramme sind ein sehr nützliches Werkzeug bei der Visualisierung von Protokolldaten. Bis jetzt habe ich ein solches Leben geführt, in dem ich durch Zeichnen entkommen bin, indem ich das Datum auf der horizontalen Achse durch eine entsprechende Zahl ersetzt habe. Jetzt ist es jedoch anders. Jetzt können Sie gut mit der horizontalen Achse in chronologischer Reihenfolge zeichnen! Daher möchte ich die Geschichte als Memorandum zusammenfassen. Das hier erstellte Diagramm verwendet nur die Option ** Minimum **.
Sie können gut mit matplotlib.dates
zeichnen.
Hier ist ein Codebeispiel.
import io
import pandas as pd
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
def main():
data = """date,value
2018-12-01,15
2018-12-02,30
2018-12-03,25
2018-12-04,18
2018-12-05,9
2018-12-06,22
2018-12-07,34
2018-12-08,33
2018-12-09,28
2018-12-10,22
2018-12-11,26
2018-12-12,31"""
df = pd.read_csv(io.StringIO(data), parse_dates=[0])
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(df['date'], df['value'])
##Passen Sie Folgendes an
daysFmt = mdates.DateFormatter('%Y-%m-%d')
ax.xaxis.set_major_formatter(daysFmt)
fig.autofmt_xdate()
plt.show()
if __name__ == '__main__':
main()
Die durch diesen Code erstellte Abbildung lautet wie folgt.
Wenn Sie die Anzeigemethode ein wenig ändern möchten,
daysFmt = mdates.DateFormatter('%Y-%m-%d')
Hier können Sie damit herumspielen.
daysFmt = mdates.DateFormatter('%m/%d')
Wenn Sie es wie oben ändern, sieht die Beschriftung der x-Achse folgendermaßen aus:
Ich werde die Daten ein wenig ändern und es für jedes Datum und jede Uhrzeit versuchen.
import io
import pandas as pd
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
def main():
data = """date,value
2018-12-01 00,15
2018-12-01 01,30
2018-12-01 02,25
2018-12-01 03,18
2018-12-01 04,9
2018-12-01 05,22
2018-12-01 06,34
2018-12-01 07,33
2018-12-01 08,28
2018-12-01 09,22
2018-12-01 10,26
2018-12-01 11,31"""
df = pd.read_csv(io.StringIO(data), parse_dates=[0])
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(df['date'], df['value'])
##Passen Sie Folgendes an
daysFmt = mdates.DateFormatter('%m/%d %H:%M')
ax.xaxis.set_major_formatter(daysFmt)
fig.autofmt_xdate()
plt.show()
if __name__ == '__main__':
main()
Die erhaltene Zahl ist wie folgt.
Wenn Sie die Frequenz der Skala ändern möchten, fügen Sie die folgenden zwei Zeilen hinzu.
daysLoc = mdates.HourLocator(byhour=None, interval=3, tz=None)
ax.xaxis.set_major_locator(daysLoc)
Dadurch wird die Frequenz der Skala geändert.
Es ist eine sehr einsame Figur geworden.
Dieses Mal habe ich es mit "Intervall" eingestellt, aber Sie können genau das gleiche Ergebnis erzielen, indem Sie die Option "Intervall" entfernen und es mit "Byhour = Range (2, 12, 3)" einstellen.
Zusätzlich zu dem hier verwendeten HourLocater
gibt es viele wie MonthLocator, WeekdayLocator, DayLocator, MonthLocator, MinuteLocator, SecondLocator
.
Das Achsenetikett ist zu lang und ragt heraus! In diesem Fall können Sie es drehen. Sie können dies tun, indem Sie die folgenden zwei Zeilen hinzufügen.
labels = ax.get_xticklabels()
plt.setp(labels, rotation=45)
Dies ist die erhaltene Zahl. Sie können sehen, dass sich der Winkel des Etiketts geändert hat.
Hier ist eine Zusammenfassung der ** minimalen ** Optionen, die ich im Laufe der Zeit zeichnen musste. Erstellen Sie je nach Situation ein verständlicheres Diagramm! Jetzt, wo wir die Visualisierung haben, ist es Zeitreihenanalyse ...
matplotlib.dates (offizielles Dokument) Achseneinstellung beim Zeichnen von Zeitreihendaten mit matplotlib + Bonus Python matplotlib-Zeitreihendiagramm (Zeitachseneinstellung) [Stellen Sie die Achsenskala des Diagramms der Zeitreihendaten mit matplotlib.dates ein] (https://bunseki-train.com/setting_ticks_by_matplotlib_dates/)
Recommended Posts