以下のプログラムを、大量のcsvデータに対して実行・グラフの出力をさせたいです。
ループ処理の記述の仕方がわかりません。
出力するグラフのタイトルにはそれぞれ元のcsv名の一部(20180912_1500~)を付けたいです。
csv一覧
NC_20180912_1500_r14_02601.csv
NC_20180912_1510_r14_02601.csv
NC_20180912_1520_r14_02601.csv
NC_20180912_1530_r14_02601.csv
NC_20180912_1540_r14_02601.csv
NC_20180912_1550_r14_02601.csv
NC_20180912_1600_r14_02601.csv
NC_20180912_1610_r14_02601.csv
… と続く10分毎のデータが格納されています。
import numpy as np import pandas as pd import matplotlib.pyplot as plt import matplotlib.dates as mdates import datetime IDATA = 'NC_20180912_1500_r14_02601.csv' OFILE = '20180912_1500.png' data = pd.read_csv(IDATA,encoding="shift_jis", header=0, index_col=0) r1 = data["r1(mm)"] col = data["sum"] start = data.index[0] end = data.index[-1] dates = pd.date_range(start=start, end=end, freq='H') xmin = datetime.datetime.strptime(start, '%Y/%m/%d %H:%M')\ + datetime.timedelta(hours=-1) xmax = datetime.datetime.strptime(end, '%Y/%m/%d %H:%M')\ + datetime.timedelta(hours=1) ymin, ymax = 0,80 y2max = 500 fig = plt.figure(figsize=(8,6)) ax = fig.add_subplot(111) ax.xaxis.set_major_formatter(mdates.DateFormatter('%m/%d\n%H:%M')) ax2 = ax.twinx() ax2.xaxis.set_major_formatter(mdates.DateFormatter('%m/%d\n%H:%M')) ax2.set_zorder(1) ax.bar(dates,r1,width=0.02, color='royalblue', label='1h') ax2.plot(dates, col, color='orange', ls='-', label='Total') #凡例 handler1, label1 = ax.get_legend_handles_labels() handler2, label2 = ax2.get_legend_handles_labels() ax.legend(handler1+handler2, label1+label2, loc='upper left', fontsize=15,\ bbox_to_anchor=(0,1),fancybox=False, edgecolor='white') #axis option ax.set_xticks(dates, minor=True) ax.set_xlim(xmin, xmax) ax.xaxis.set_major_locator(mdates.HourLocator(byhour=range(0,24,3))) ax.xaxis.set_monor_locator(mdates.HourLocator(byhour=range(0,24,1))) ax.set_ylim(ymin, ymax) ax.set_yticks(np.arange(ymin, ymax+10,10)) ax.set_yticks(np.arange(ymin, ymax+5,5),minor=True) ax.tick_params(direction='in', which='major', pad=7, labelsize=9) ax.tick_params(direction='in', which='minor') ax2.set_ylim(ymin, y2max) ax2.set_yticks(np.arange(ymin, y2max+100,100)) ax2.set_yticks(np.arange(ymin, y2max+25,25), minor=True) ax2.tick_params(direction='in', which='major', pad=7, labelsize=9) ax2.tick_params(direction='in', which='minor') #label ax.set_xlabel('Hour', fontsixe=11) ax.set_ylabel('Pre[mm]', fontsixe=11) ax2.set_ylabel('acR[mm]', fontsize=11) ax.set_title('20180912_1500', fontsize=14) plt.savefig(OFILE)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/17 01:19
2020/10/17 01:22