まずはcsvから日付の部分を読み込む
日付データは 2022/03/28 というフォーマットになっている
これをdatetime型で読み込めば良さそうだけど、他の部分が実数で読み込まないといけないのでこういう実装にしてる
データを読み込んで文字列にする
↓
/ を - に置換
↓
datetime型として読み込む
本当はこのあとnumpyに戻したかったけど、そうするとdatetime型じゃなくなるので
しょうがないので、リストで扱うことに(ここでハマった。)
fname="hoge.csv" if os.path.exists(fname): a = np.loadtxt(fname, unpack=True, dtype="unicode", delimiter=',', skiprows=1) mmdd=[] data["date"] = a[1].astype(str) tmp = np.char.replace(data["date"], "/", "-") for (i, x) in enumerate(tmp): mmdd.append(datetime.strptime(x, '%Y-%m-%d')) # 時間要素があればここを書き換えれば良いと思う・・・ data["T"] = a[2].astype(np.float64)
これさえできればあとは
plt.plot(mmdd, data1)
みたいな感じでプロットすれば良いと思う
1週間ごとに点をx軸に打ちたいときは
plt.gca().xaxis.set_major_locator(mdates.DayLocator(interval=7)) plt.gca().xaxis.set_major_formatter(mdates.DateFormatter("%m-%d"))
これはpltではなくsubplotなどでaxになっている時は、
ax.xaxis.set_major_locator(mdates.DayLocator(interval=7)) ax.xaxis.set_major_formatter(mdates.DateFormatter("%m-%d"))
でOK
matplotlibで忘れがちな文法まとめ #Python - Qiita
datetime64
datetime64
という型もあるらしくて、そっちで読み込もうとしてみたが、読み込んだあとの取り回しがまったくわからずに諦めた・・・
x軸の日付を範囲指定してプロットする範囲を制限したい時
from datetime import datetime xmin='2022-03-28' xmax='2022-06-01' xmin = datetime.strptime(xmin, '%Y-%m-%d') xmax = datetime.strptime(xmax, '%Y-%m-%d') plt.xlim([xmin,xmax])