台風14号
9月7日にフィリピンの東で発生した台風14号が、17日から18九州、四国、紀伊半島を抜けていきました。台風は南からという常識を覆して、この台風は西から現れ、福岡県に上陸しました。福岡県に最初に上陸したのは、史上初のことだそうです。南からやってきた台風が、大陸の高気圧に阻まれ、行き場を失って日本列島にやってきたようです。
また、今年は大雨の災害が多いように思っていたのですが、本州にやってきた最初の台風だと思います。
そこで、台風の接近にあわせて、各種センサーの値に注目してみました。PostgreSQLを使って、ため込んでいるデータを利用します。まず、必要なデータをSQLを使って取り出し、CSVファイルに書き出します。
pi=# \COPY (SELECT to_char(date,'YYYY-MM-dd HH24:MI:SS'),temperature,humidity,pressure,co2 FROM sensordata where date BETWEEN '2021-09-17 08:00:00' AND '2021-09-19 07:00:00') TO '/home/pi/bme280-data/tai14.csv' WITH CSV DELIMITER ',';
できたCSVファイル(tai14.csv)を読み込んでグラフにしました。コードはMatplotlibを使ってPythonで記述しています。
# -*- coding: utf-8 -*- import pandas as pd import matplotlib.pyplot as plt import matplotlib.dates as mdates import datetime #今日の日付のファイルからデータをpandasで読み込む dir_path = '/home/pi/bme280-data/' filename = 'tai14' data = pd.read_csv(dir_path + filename + '.csv', names=('Time','Temperature', 'Humidity', 'Pressure', 'CO2'), index_col='Time', parse_dates=True) #気温、湿度、気圧、二酸化炭素濃度のデータを分ける df_tmp = data.iloc[:, [0]] df_humid = data.iloc[:, [1]] df_press = data.iloc[:, [2]] df_co2 = data.iloc[:, [3]] # Figureの初期化 fig = plt.figure(figsize=(12, 18)) # Figure内にAxesを4つ追加 #"b"(青), "g"(緑), "r"(赤), "c"(シアン), "m"(マゼンダ), "y"(イエロー), "k"(黒), "w"(白)で指定する ax1 = fig.add_subplot(411) #気温用 ax1.plot(df_tmp,color = "r") #"b"(青), "g"(緑), "r"(赤), "c"(シアン), "m"(マゼンダ), "y"(イエロー), "k"(黒), "w"(白)で指定する ax1.set_xlabel('Time') #横軸のラベル ax1.set_ylabel('Temperature') #縦軸のラベル ax1.legend(['Temperature degree Celsius'])#凡例 #ax1.set_xticks([]) #目盛りを表示しない #ax1.xaxis.set_major_locator(mdates.DayLocator(bymonthday=None, interval=1, tz=None)) ax1.xaxis.set_major_locator(mdates.HourLocator(interval=5))#5時間ごとに目盛りを表示 ax1.xaxis.set_major_formatter(mdates.DateFormatter("%d-%H:%M"))#横軸の目盛りのフォーマット #ax1.set_title('気温の変化') # グラフタイトル ax1.grid(b=None, which='major', axis='both') ax2 = fig.add_subplot(412) ax2.plot(df_humid,color = "b",) ax2.set_xlabel('Time') # x軸ラベル ax2.set_ylabel('Humidity') # y軸ラベル ax2.legend(['Humidity %']) # 凡例を表示 #ax2.set_xticks([]) ax2.xaxis.set_major_locator(mdates.HourLocator(interval=5))#5時間ごとに目盛りを表示 ax2.xaxis.set_major_formatter(mdates.DateFormatter("%d-%H:%M"))#横軸の目盛りのフォーマット ax2.grid(b=None, which='major', axis='both') ax3 = fig.add_subplot(413) ax3.plot(df_press,color = "g") ax3.set_xlabel('Time') # x軸ラベル ax3.set_ylabel('Pressure') # y軸ラベル ax3.legend(['Pressure hPa']) # 凡例を表示 #ax3.set_xticks([]) ax3.xaxis.set_major_locator(mdates.HourLocator(interval=5))#5時間ごとに目盛りを表示 ax3.xaxis.set_major_formatter(mdates.DateFormatter("%d-%H:%M"))#横軸の目盛りのフォーマット ax3.grid(b=None, which='major', axis='both') ax4 = fig.add_subplot(414) ax4.plot(df_co2,color = "y") ax4.set_xlabel('Time') # x軸ラベル ax4.set_ylabel('CO2') # y軸ラベル ax4.legend(['CO2 ppm']) # 凡例を表示 #ax4.set_xticks([]) ax4.xaxis.set_major_locator(mdates.HourLocator(interval=5))#5時間ごとに目盛りを表示 ax4.xaxis.set_major_formatter(mdates.DateFormatter("%d-%H:%M"))#横軸の目盛りのフォーマット ax4.grid(b=None, which='major', axis='both') plt.savefig("/home/pi/bme280-data/Tai_14.png") plt.show()
台風の後は、秋晴れです。