Konvertieren Sie den DataFrame-Index beim Downsampling in DatetimeIndex (http://qiita.com/TomHortons/items/9633394afb55bd777fa0#4-%E3%82%B5%E3%83%B3%E3%83%97 % E3% 83% AB% E9% 96% 93% E9% 9A% 94% E3% 81% 8C% E3% 81% BE% E3% 81% B0% E3% 82% 89% E3% 81% AA% E3 % 83% 87% E3% 83% BC% E3% 82% BF% E3% 82% 92% E3% 83% 80% E3% 82% A6% E3% 83% B3% E3% 82% B5% E3% 83 % B3% E3% 83% 97% E3% 83% AA% E3% 83% B3% E3% 82% B0% E3% 81% 99% E3% 82% 8B), was sehr praktisch ist, aber von dort aus sns.tsplot Die Visualisierung dauert lange.
Erstellen Sie beispielsweise einen DataFrame.
import datetime
import pandas as pd
df = []
start_date = datetime.datetime(2015, 7, 1)
for i in range(10):
for j in [1,2]:
unit = 'Ones' if j == 1 else 'Twos'
date = start_date + datetime.timedelta(days=i)
df.append({
'Date': date,
'Value': i * j,
'Unit': unit
})
df = pd.DataFrame(df)
Bei der Ausführung wird ein DataFrame erstellt, der die folgenden Spalten vom Typ Datetime enthält.
Date Unit Value
0 2015-07-01 Ones 0
1 2015-07-01 Twos 0
2 2015-07-02 Ones 1
3 2015-07-02 Twos 2
4 2015-07-03 Ones 2
5 2015-07-03 Twos 4
6 2015-07-04 Ones 3
7 2015-07-04 Twos 6
8 2015-07-05 Ones 4
9 2015-07-05 Twos 8
10 2015-07-06 Ones 5
11 2015-07-06 Twos 10
12 2015-07-07 Ones 6
13 2015-07-07 Twos 12
14 2015-07-08 Ones 7
15 2015-07-08 Twos 14
16 2015-07-09 Ones 8
17 2015-07-09 Twos 16
18 2015-07-10 Ones 9
19 2015-07-10 Twos 18
Wenn Sie diesen DataFrame mit sns.tsplot beschreiben,
import seaborn as sns
import matplotlib.pyplot as plt
sns.tsplot(df, time='Date', value='Value', unit='Unit')
Die Datums- und Uhrzeitangabe wird normalerweise nicht angezeigt, obwohl auf der horizontalen Achse das Datum angegeben ist. Wenn Sie DataFrame.plot () verwenden, wird dieser Bereich reibungslos angezeigt. Wenn Sie jedoch tsplot verwenden, möchten Sie auf jeden Fall seaborn verwenden.
Fragen zu diesem Bereich wurden in StackOverflow zusammengefasst.
Matplotlib verwendet Gleitkommazahlen für Daten, und Pandas und Seaborn müssen diese offenbar explizit angeben. Verwenden Sie daher den Datums-Locator und den Datumsformatierer.
Konvertieren Sie zuerst das Datum, damit matplotlib.date es verstehen kann.
import datetime
import pandas as pd
import matplotlib.dates as mdates
df = []
start_date = datetime.datetime(2015, 7, 1)
for i in range(10):
for j in [1,2]:
unit = 'Ones' if j == 1 else 'Twos'
date = start_date + datetime.timedelta(days=i)
df.append({
'Date': mdates.date2num(date),
'Value': i * j,
'Unit': unit
})
df = pd.DataFrame(df)
Es ist fast dasselbe wie der erste DataFrame, wird jedoch vor dem Einfügen des Datums in das Datum von matplotlib.dates.date2num () konvertiert.
Alternativ können Sie den vorhandenen DataFrame mit Map wie folgt verarbeiten.
df.index = map(lambda x: mdates.date2num(x), df.index)
Zeichnen Sie nach der Konvertierung von Date tsplot.
import seaborn as sns
import matplotlib.pyplot as plt
# build the figure
fig, ax = plt.subplots()
sns.tsplot(df, time='Date', value='Value', unit='Unit', ax=ax)
# assign locator and formatter for the xaxis ticks.
ax.xaxis.set_major_locator(mdates.AutoDateLocator())
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y.%m.%d'))
Nachdem Sie ax im Unterplot angegeben haben, setzen Sie die Achse mit set_major_locator und set_major_formatter. Hier wird% Y.% M.% D nach Bedarf modifiziert.
Wenn es ausgeführt wird, sieht es so aus.
Das Datum kann als x-Achse angezeigt werden. Neigen Sie den Winkel der Buchstaben um 45 Grad, um die überlappenden Teile besser erkennen zu können.
# put the labels at 45deg since they tend to be too long
fig.autofmt_xdate()
Ich konnte das Datum sicher auf der x-Achse verwenden. ** Es gibt verschiedene Möglichkeiten, die Achsenanzeige zu neigen. Beachten Sie jedoch, dass das Datum je nach Methode möglicherweise mehrmals verstümmelt wurde. ** ** **
Recommended Posts