見出し画像

アメダス気象観測データの時系列図

今回は、アメダス気象観測データの時系列図について、この図の有用性とコードの紹介になります。データは気象庁HPから取得しCSV形式のファイルを利用します。コードはpythonで記述し、matplotlibを利用しています。最後に、サンプルコードを掲載しています。ご利用ください。

気象観測データ時系列図の有用性

大気の構造を把握する上、地上の観測点がまばらである地域では面的に大気の状態を捉えるのは困難です。これを補うためには観測地点の時系列を調べることで、面的分布をある程度推定することが可能となります。また、気温の変化における降水や風の変化との対応関係などを確認することも、大気現象を把握する上で重要です。

以前の記事では、宗谷地方の暴風を扱いました。例として、この日の宗谷岬の時系列データを図1に示します。この図から、9時頃から18時過ぎにかけて気温は低下していましたが、風が南南東から南南西に変わってから19時頃に気温が一時的に上昇し、その後、北西風に変化した段階で気温が急下降、風がさらに強まっていることがわかります。発達している低気圧が北を通過した場合に、このような気温と風の変化することがありません。

この時系列図を確認してから通常の天気図を解析することで、より適切な解析ができます。

図1 2021/11/19 宗谷岬におけるアメダス観測の時系列図
気温(赤線)、10分間内最大瞬間風速(青点線)、10分間雨量(bar)、平均風(矢羽)

アメダス観測データのCSVファイルの作り方

アメダス観測データのCSVファイルの作成手順は次の通りです。
① データは気象庁ホームページの「過去の気象データ検索」を開く
② 作図する地点を「地点の選択」から選択
③ 作図する日付を「年月日の選択」から選択
④ 「データの種類」では"xxx年xx月xx日の10分ごとの値の表示"のリンクへ進む
⑤ 表示された観測表部分をマウスドラッグにより選択し、コピーする
⑥ Exceclなど表計算アプリを起動し、新しいシートにペーストし、CSV出力する
⑦ 出力したCSVファイルの1行目を次の文字列に置き換える
時刻,降水量,気温,平均風速,平均風向,最大瞬間風速,風向,日照時間

 作成したCSVのファイルは、次のようになります。

時刻,降水量,気温,平均風速,平均風向,最大瞬間風速,風向,日照時間
00:10,0.0,6.7,6.5,西南西,8.7,西南西,
00:20,0.0,7.0,7.5,西南西,10.4,西南西,
00:30,0.0,6.4,6.4,南西,8.7,南西,
  (途中 省略)
23:30,0.0,3.3,18.5,北北西,23.0,北北西,
23:40,0.0,2.9,18.0,北北西,21.9,北北西,
23:50,0.0,3.1,18.0,北北西,21.7,北北西,
24:00,0.0,3.7,17.4,北北西,22.2,北西,

souya_20211119.csv

ここでは1日間の時系列を表示している。一部の期間の時系列を作成したい場合は、このCSVファイルを表示したい期間のみに編集してください。コードは変更する必要はありません。

コードの解説

作図コードは一番下からダウンロードできます。必要なら先にダウンロードして、確認してください。

前半のパートでは、データ読み込みや作図に必要な値や文字列を代入しています。コメント行通りに指定してください。気温や風の表示範囲などは手動で設定することにしています。データがなるべく重なって表示されないようにするために、手動設定としました。

## 設定パート
# 年月日
year=2021
month=11
day=19
#
# 地点名
station_name='Cape Soya'
#
# CSVファイル名
fn='souya_20211119.csv'
#
## 表示設定
# 画像サイズ
s_figsize=(12, 4)
s_dpi=120
#
# 矢羽のy軸位置指定(気温の縦軸利用)
yloc = 12.0
# 矢羽の説明 y軸位置指定
y_wind_caption=14.0
#
# 矢羽の長さ
barb_length=7
#
# 風速・温度の範囲 
wind_range = [0, 50]
temp_range = [0, 15]
prec_range = [0, 20]
#
# 目盛の表示位置 降水量
prec_ticks = [1, 2]

基本的に上記の部分さえ適切に設定すれば、それ以外は変更しなくても作図できます。

今回のコードでは、同じ図にy軸が異なる3種類のデータ(気温・風速・降水量)の重ね方とそのコード作成が勉強になりました。この部分を抜き出したコードを下に示します。

### 作図
fig, ax1 = plt.subplots(tight_layout=True,figsize=s_figsize, dpi=s_dpi)
#
## 左軸の設定
# 横軸の設定(共通)
plt.xlim([dt_min, dt_max])
# 横軸の位置(y座標)
#ax[0,0].spines['bottom'].set_position(('data', 0))
#
## 気温の表示
ax1.tick_params(direction = "out", length = 5)
ax1.set_ylim(temp_range)
ax1.plot(dt_ary,temp, color="red")
ax1.set_ylabel('Temperature', color="red")
#
## 風速
ax2 = ax1.twinx()
ax2.tick_params(direction = "out", length = 5)
ax2.set_ylim(wind_range)
ax2.plot(dt_ary,sws, linestyle="dashed", color="blue")
ax2.set_ylabel('Instantaneous Wind Speed(m/s)', color="blue")
#
## 降水量
ax3 = ax1.twinx()
ax3.tick_params(direction = "in", length = 5, colors = "green")
ax3.set_ylim(prec_range)
ax3.set_yticks(prec_ticks)
ax3.bar(dt_ary,prec,width=0.005, color="green")

新たな軸を作成する直前に ax2 = ax1.twinx() を前置きすれば、いくつでも重ねることはできます。

ただし、y軸の目盛や目盛ラベルを工夫しなければなりません。今回は、それぞれの目盛を、1軸目は左端に、2軸目は右端の外側に向けて、3軸目は右側の内側に向けて作図しました。

目盛の外側か内側について、次の様に指定しています。"in"なら内側、"out"なら外側となります。
  ax3.tick_params(direction = "in")
折線の色とラベルの色を合わせるなどの工夫もこのtick_params()で設定することで可能です。

作図コードとサンプルCSVファイル

JupyterNotebook用の作図コードと、図1で利用したCSVファイルを下に掲載します。MetPyなどのインストールが必要です。興味のある方は、ダウンロードして試してみてください。

補助線を追加するなど、改良する余地がまだまだあります。このコードを使ったり改良して、さまざまな気象現象を調べてもらえると嬉しいです!


この記事が気に入ったらサポートをしてみませんか?