質問: data.iloc[:, [4]] plt.scatter(data['time'], data['humidity'], s=5, c="b",alpha=0.9) plt.xlim(0, 1440) # (3)x軸の表示範囲 plt.ylim(0, 100) # (4)y軸の表示範囲 plt.title("logtest 11 20191216 humidity") plt.xlabel("time",fontsize=20) # (6)x軸ラベル plt.ylabel("humidity",fontsize=20)# (7)y軸ラベル plt.savefig("logtest 11 20191216 humidity") plt.show() plt.close() print('グラフ完了') ### 試したこと 対象のCSVファイルは 「logtest 11 日付.csv」 という基準で名付けています。 日付の部分は20191216~202019 まであります。 このプログラム「graph_all.py」と 同じフォルダに保存されています。 例:csvファイル date,time,light,temperature,humidity,soilmoisture 2019/1/16,0:00,0,14,69,672 2019/1/16,0:01,0,14,69,669 2019/1/16,0:02,0,0,0,689 の形式です。 ### 補足情報(FW/ツールのバージョンなど) バージョン: 1.41.1 (user setup) コミット: 26076a4de974ead31f97692a0d32f90d735645c0
回答: まずは、上記のソースコードですがループ処理により、こんな感じで書けます。 (一部処理を省いておりますが) ``` import pandas as pd import matplotlib.pyplot as plt import matplotlib.ticker as ticker #date,time,light,temperature,humidity,soilmoisture data = pd.read_csv("logtest 11 20191216.csv", encoding="shift-jis", parse_dates={'datetime': ['date','time']}, index_col='datetime') for col, d in data.iteritems(): if col not in ['temperature','humidity']: d.plot() else: d.plot(marker='o',linestyle='None', color="b",alpha=0.9) plt.title(f"logtest 11 20191216 {col}") plt.show() plt.savefig(f"logtest 11 20191216 {col}.png") plt.close() print('グラフ完了') ``` あとは上記の処理をさらにファイルの数だけループ処理するだけです。 このサンプルではでは、data フォルダ内にある csv ファイルを全て読み込んで、output フォルダにグラフを出力します。(前もって output フォルダは作成しておいてください。) ``` import as pd import matplotlib.pyplot as plt import matplotlib.ticker as ticker import glob import os for file in glob.glob('data/*.csv'): basename = os.path.basename(file) name = os.path.splitext(basename)[0] data = pd.read_csv(file, encoding="shift-jis", parse_dates={'datetime': ['date','time']}, index_col='datetime') for col, d in data.iteritems(): if col not in ['temperature','humidity']: d.plot() else: d.plot(marker='o',linestyle='None', color="b",alpha=0.9) plt.title(f"{name} {col}") #plt.show() plt.savefig(os.path.join('output', f"{name} {col}.png")) plt.close() ```