どうも,Hiro(@hiroloquy)です.
最近,日本国内での新型コロナウイルス (COVID-19) の感染状況が悪化し,緊急事態宣言の再発令や医療壊滅の懸念など,かなり緊張感が高まっていますね
記事 新型コロナウイルス感染症緊急事態宣言(内閣官房新型コロナウイルス感染症対策推進室)
▶︎ https://corona.go.jp/emergency/
動画 「このままでは医療壊滅に」日本医師会が危機感(FNNプライムオンライン)
昨年に日本でもコロナが広がり,外出自粛やイベントの中止などによって一時期収まったと思えば,1年後には医療壊滅が近づいている.恐ろしいですね…
この現状・ニュースを知ったとき,日本国内のコロナの感染状況が現在どうなっているのか,昨年の流行初期からどう変化しているのか気になったので,陽性者数と死亡者数の2つのデータに着目し,過去1年間の推移をグラフ化・アニメーションにしてみました.
詳細は以下の順番で説明していきます.
1.データ収集 → 2. gnuplotでグラフ作成 & PNG出力 → 3. FFmpegでアニメーション化
データ収集
今回,厚生労働省が公開しているオープンデータを元にグラフを作成しました.
下記リンクから,陽性者数,PCR検査実施人数,死亡者数,入院治療等を要する者の数などのcsvファイルをダウンロードできます.
出典 オープンデータ(厚生労働省)https://www.mhlw.go.jp/stf/covid-19/open-data.html
今回は陽性者数と死亡者数の2つのデータを使います.
gnuplotでグラフ作成 & PNG出力
次に,gnuplotでグラフを作成し,PNG画像に出力します.
今回は陽性者数 (pcr_positive_daily.csv) を青色の棒グラフ,死亡者数 (death_total.csv) を赤色の折れ線グラフにして同時にプロットします.
しかも,データの推移をアニメーションにするので,今回は日付ごとにプロットさせます.
なのでCSVファイルに記録された日数分だけPNG画像が出力されます.
今回は2020年1月16日〜2021年1月15日の1年間分なので,画像枚数は366枚です.
(プログラム13,14行目でPNG画像を保存するフォルダを自動作成するのでご安心を)
ディレクトリ構造はこのようになります.
フォルダ
├ COVID-19_japan.plt
├ pcr_positive_daily.csv
├ death_total.csv
└ image/
├ img_0001.png
├ img_0002.png
︙
得られた大量のPNG画像はあとで紹介するFFmpegによって動画に変換します
注意 pcr_positive_daily.csvは2020年1月16日から,death_total.csvは2020年2月14日からデータが始まるため,データの開始日と日数は異なります.他の集計データでも集計開始日が異なるので,注意してください.
FFmpegでアニメーション化
最後に,得られた連番PNG画像をFFmpegによってアニメーションにします.
FFmpegを使ったことがない,インストールをしていない場合はこちらを参考にしてください.
記事 HomebrewでMacにFFmpegをインストールする方法と使い方(新卒エンジニアの開発日記)
▶︎ https://fukatsu.tech/install-ffmpeg
今回は以下のコマンドを実行してアニメーションを作りました.
ffmpeg -framerate 18 -i img_%04d.png -vcodec libx264 -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" -r 60 movie.mp4
詳細な部分については忘れたので各自調べてください.ただ,2つの数字についてだけ説明します.
- “18”は1秒間のフレーム数,つまり動画1秒の間にgnuplotで作ったPNG画像を何枚表示するかを決定します.今回,2020年1月16日〜2021年1月15日の1年間(=366日)の感染データを20秒動画にするので,366枚 ÷ 20 秒 = 18.3枚/秒 ≒18枚/秒 と計算できます.
- “60”は出力される動画 (movie.mp4) のフレームレート (fps) です.60 fps にしたので高品質ですがファイルサイズは大きくなります.
gnuplotが大量のPNG画像を詰めたフォルダ (imageフォルダ,コード13行目参照) で実行すれば,movie.mp4が出力されます.これで終わりです!
日本の新型コロナウイルスの陽性者 / 死亡者の推移 (2020.1 – 2021.1)
上記1〜3の手順で出力したアニメーション動画はこちら.
(YouTubeに動画をまとめてるのでチャンネル登録よろしくお願いします)
陽性者数の変動がまさに波ですね.
これまでの第1波,第2波以上に現在の第3波が危険な状況であることがわかります.
2020年10月からの陽性者数の増え方がすごく,緊急事態宣言が再発令されるのも,医療壊滅の警告が出るのも納得です.
また,2021年1月15日時点で新型コロナウイルスによる死亡者数が合計4379人であることにもかなり驚きました.
ネット記事やSNSで新型コロナウイルスの感染者数や政府の対応,世界での感染状況などを目にすることが多いですが,自分の手で調べて数値や傾向を見ると,改めて現在の状況の怖さを感じました.
まとめ
今回は厚生労働省が公開してる過去1年間のデータを元に,日本国内の新型コロナウイルスの陽性者 / 死亡者の推移をgnuplot + FFmpegでアニメーションにしました.
使用した厚生労働省のオープンデータは全国の都道府県の合計値でしたが,NHKは都道府県別のデータを公開しているみたいなので,次回は円を使って都道府県ごとの感染規模を表した図をgnuplotで作ってみたいと思います.(時間があれば)
参考 新型コロナウイルス データで見る感染状況一覧(NHK特設サイト)
▶︎ https://www3.nhk.or.jp/news/special/coronavirus/data-widget/
また,今後も時事的な内容について取り上げ,どこかの機関・団体が公開しているデータがあれば,それもgnuplotでグラフ or アニメーションにしてみようと思います.
(以前,JAXAの公開データを元に,はやぶさ2の軌道データをgnuplotでアニメーションにしたので,よければ観てください.詳細については後日まとめます.)
コメント