クリスマス前後でしばらく寝込んでいたのですが、今週は体調が戻りました。 折角なので寝込んでいた時期の体温の変化を可視化してみます。
等間隔になっていないデータをどうプロットするか
体温はずっと測っていたわけではないので、時間軸の感覚が不揃いです。最大値と最小値のどこにいるかを計算して散布図を描くという手もありえますが、Matplotlibは最強でした。
横軸データを文字列ではなく、datetime型で渡してやるとMatplotlibがよしなにしてくれる。 この記事の学びはこれだけ!
実装
import datetime import matplotlib.dates as mdates import matplotlib.pyplot as plt import pandas as pd # 体温データを定義 temperature = [(datetime.datetime.strptime(t, '%Y-%m-%d %H:%M:%S'), v) for t,v in [ ('2018-12-18 23:13:00', 37.5), ('2018-12-19 01:12:00', 39.0), ('2018-12-19 02:38:00', 38.1), ('2018-12-19 10:14:00', 37.0), ('2018-12-19 18:44:00', 36.7), ('2018-12-19 21:41:00', 37.5), ('2018-12-20 03:17:00', 37.5), ('2018-12-20 11:47:00', 37.0), ('2018-12-20 16:58:00', 36.6), ('2018-12-20 19:14:00', 37.2), ('2018-12-21 19:34:00', 36.8), ('2018-12-22 00:42:00', 36.7), ('2018-12-22 14:59:00', 36.8), ]] df = pd.DataFrame(temperature, columns=['time', 'temperature']) ax = plt.subplot() ax.xaxis.set_major_formatter(mdates.DateFormatter('%m/%d\n%H:%M')) ax.set_xlim(datetime.datetime(2018, 12, 18, 18), datetime.datetime(2018, 12, 22, 18)) ax.set_ylim(36.3, 39.2) ax.plot(df['time'], df['temperature']) plt.show()
感想
時系列が等間隔でないデータを可視化するのも簡単ですね!