#テストデータ
import pandas as pd
tm=pd.date_range("2020/2/3 9:00" ,"2020/2/3 11:00" , freq="60min")
dt1=range(len(tm))
dt2=range(0,-len(tm),-1)
df=pd.DataFrame({"tm":tm , "dt1":dt1 , "dt2":dt2})
print(df.to_markdown())
tm | dt1 | dt2 | |
---|---|---|---|
0 | 2020-02-03 09:00:00 | 0 | 0 |
1 | 2020-02-03 10:00:00 | 1 | -1 |
2 | 2020-02-03 11:00:00 | 2 | -2 |
#X軸を共有にして2つのグラフを書く。その時、横軸は1分おきに軸線を書き、5分おきにラベルを書く
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
#sharex="col"でX軸を共通にする
fig ,ax = plt.subplots(2 , 1, sharex="col", figsize=(10 , 20))
ax[0].plot("tm" , "dt1" ,data=df)
ax[0].grid(True)
ax[1].plot("tm" , "dt2" ,data=df)
ax[1].grid(True)
#x軸の描画の範囲を指定。これを入れないと、時刻がうまくそろわない
ax[1].set_xlim(tm[0] , tm[-1])
#5分おきにラベル
Minute1=mdates.MinuteLocator(range(60),5)
ax[1].xaxis.set_major_locator(Minute1)
#1分おきに軸線
Minute2=mdates.MinuteLocator(range(60),1)
ax[1].xaxis.set_minor_locator(Minute2)
#H:M のフォーマットでラベルを書く
Minute_fmt = mdates.DateFormatter('%H:%M')
ax[1].xaxis.set_major_formatter(Minute_fmt)
#縦書きの指定
plt.setp(ax[1].get_xticklabels(), rotation=90, ha="right")
#表示
plt.show()