わかめの備忘録

約140年分の東京の平均気温をヒートマップ化してみた

この記事を読んでできること

誰でもこの記事と同じヒートマップが作れるようになれる。 toyokeizai.net

完成品

f:id:wakame1367:20180804211306p:plain

と言ってもまったく同じものができるわけではなく
自分が今持っている技術(PythonやPandas等)でヒートマップ化してみましょうという話。

データの準備

過去の気象データ・ダウンロード

今回利用するデータは気象庁が提供している過去の気象データになります。 下記リンクから以下の手順でダウンロードしてください。 www.data.jma.go.jp

都道府県・地区を選択する

今回は東京についての平均気温データを取得するので
東京をクリックしてください。

f:id:wakame1367:20180801225859p:plain:w500

東京をクリックするとこんな画面になると思います。
東京にチェックがついているか確認してください。
ついていればOKです。

f:id:wakame1367:20180801230130p:plain:w500

取得する項目(今回は日平均気温)を選ぶ

次に画面上のタブから項目を選ぶボタンを押して下さい。
そうするとこんな画面になると思います。

f:id:wakame1367:20180801231010p:plain:w500

そうしたらデータの種類-日別値項目-気温-日平均気温にチェックを入れて下さい。

f:id:wakame1367:20180801231216p:plain:w500

取得する期間を選ぶ

次に画面上のタブから期間を選ぶボタンを押して下さい。
そうするとこんな画面になると思います。 f:id:wakame1367:20180804182000p:plain:w500

取得する期間を選ぶのですが今回は記事と同じ期間を選んでみます。記事によると

このヒートマップは、夏期(6月から9月)の東京における過去140年間の日別平均気温を表したものだ。横軸は月、縦軸は年(1876年から2018年)を示している。

だそうなので、1876年から2018年までの期間を選んでみます。
過去の気象データ・ダウンロードではどうも一度にまとめてダウンロードできないようなので

  • 1876年 - 1940年
  • 1941年 - 2017年

と二段階に分けてダウンロードします。
特定の期間を複数年分、表示するにチェックを入れて以下のように期間を入力してください。 そうしたらCSVファイルをダウンロードボタンを押してCSVファイルをダウンロードしてください。 f:id:wakame1367:20180804182154p:plain:w500

f:id:wakame1367:20180804182211p:plain:w500

最後に2018年のデータをダウンロードします。
連続した期間で表示するにチェックを入れて以下のように期間を入力してください。 そうしたらCSVファイルをダウンロードボタンを押してCSVファイルをダウンロードしてください。 f:id:wakame1367:20180804184105p:plain:w500

これでヒートマップを描画するためのデータの準備ができました。

データの可視化

コードはGoogleColabで実行できるように下記リンク先で閲覧可能です。

GoogleColab - heatmap.ipynb

自分の環境で試したいという方はファイル > .ipynbをダウンロードを押すとJupyterNotebook形式のファイルが
ダウンロードできます、そちらを自分のGoogleDriveにアップロードしてGoogleColab環境で実行してもらえれば冒頭のヒートマップが描画できます。

GoogleColabの使い方についてはこちらで説明しています。 wakame1367.hatenablog.com

最後に

toyokeizai.net

こちらの記事で使われているライブラリ、記事より引用すると

ヒートマップの画像生成にはJavaScriptライブラリのP5.jsを用いている。

とのこと。P5.jsの使い方はさっぱりわからないし、 可視化に使っているデータを見てみると(記事の「データをダウンロード(JSON)」からダウンロードしてみてください)

f:id:wakame1367:20180731213512p:plain

おそらく1日毎の平均気温を配列に格納しているようですが
可視化のためにこのJSONファイルを作成するスクリプトを作るのも面倒なので、なんとか元のCSVをそこまで加工せずに可視化ができないかを考えたというのがこの記事を書いたモチベーションになります。

参考