pythonで、csvファイルから経時変化グラフを描きたい
0時から24時までのプロットグラフを、折れ線グラフにするコードを示します。
こちらで、グラフを表示できるようになったのですが、以下の数点を実現したいと思います。
実現したいこと
- excelで作ったグラフのように(添付図参照)、プロットを折れ線グラフを両方表示したい。かつ折れ線グラフをexcelで作ったグラフのように滑らかに表示したい。
- 特定の日にちデータだけ太線で示す。
- すべてのフォントを一括でboldで示す。
###該当のcsvデータ
https://firestorage.jp/download/5c2e9cf05118ca0041b2f25fb1e72b8bd3366d5a
該当のソースコード
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as md
from datetime import datetime, timedelta
df = pd.read_csv('hada_glucose_2022-8-25_present3.csv', parse_dates=['time'])
org_date = '2022-1-01'
st = datetime.strptime(org_date, '%Y-%m-%d')
xlim = [pd.to_datetime(st), pd.to_datetime(st+timedelta(days=1))]
fig, ax = plt.subplots(figsize=(17,9))
plt.rcParams["font.family"] = "Helvetica"
plt.rcParams["font.size"] = 12
ax.set_xlabel("Time", fontweight='bold')
ax.set_ylabel("Interstitial glucose level / mg/dL", fontweight='bold')
#for day, gdf in df.groupby(pd.Grouper(key='Time', freq='D')):
for day, gdf in df.groupby([df['time'].dt.date]):
gdf = gdf.copy() # Suppress SettingWithCopyWarning gdf['time'] = pd.to_datetime(gdf['time'].dt.strftime(f'{org_date} %H:%M')) gdf.plot( ax=ax, x='time', y='IGT / mg/dL', label=day.strftime('%Y-%m-%d')) ax.set_xlim(xlim) ax.xaxis.set_major_locator(md.HourLocator(interval = 1)) # 1hour ax.xaxis.set_major_formatter(md.DateFormatter("%H:%M")) # hour:min ax.grid(which = "major", axis = "x", color = "black", alpha = 0.4, linestyle = "--", linewidth = 0.2) ax.grid(which = "major", axis = "y", color = "black", alpha = 0.4, linestyle = "--", linewidth = 0.2)
plt.ylim(40,220)
plt.legend(bbox_to_anchor=(1.01, 1), loc='upper left', borderaxespad=0, fontsize=12)
plt.savefig("hada_glucose_2022-8-25_present3.png",dpi=400)
plt.show()
###pythonで得られる図
0 コメント