Python

PythonとPlotly Expressでアニメーション付きのコロプレス図(階級区分図)を作ろう〜新型コロナ感染者数推移

GISデータを扱っていると地図上にマッピングして、どの地域がどんな感じになっているか視覚的にみたい事はよくあるかと思います。

そんなときに便利なのかコロプレス図(階級区分図)と呼ばれるものです。

名前こそ聞き馴染みはないかもしれませんが、テレビとかではよく見る図かと思います。

こちらはwikipediaより借りてきた画像ですが、以前のアメリカ大統領選のオバマ VS ロムニーの州ごとの獲得選挙人の分布になっています。

(https://ja.wikipedia.org/wiki/階級区分図)

これがコロプレス図、または階級区分図というものです。

こういう風に地図上に可視化するとわかりやすいケースはよくありますので、今回はそれを Pythonで作ってみようというのをやってみます。

今回使うライブラリは、"Plotly Express"というライブラリです。

さぁ、やってみましょう!

 

新型コロナウイルス感染者数の分布

今回はPythonで作るコロプレス図の例として、新型コロナウイルス(Covid19)の世界での感染者数についてやってみたいと思います。

データはこちらのサイトからダウンロードし、適当なディレクトリにおきます。

https://github.com/owid/covid-19-data/tree/master/public/data/

 

2021/11時点のデータですが12万行ほどありますね。

こちらに全世界の感染者数が国ごとに日ごとに入っているということです。

ではまずは試しに2021/10/1のデータを抽出して、コロプレス図を作ってみましょう!

 

こちらのデータにはisoコードという国を表すコードが入っているので、この"iso_code"をpx.choloplethのlocationsに指定するだけで簡単にコロプレス図ができます。

ただ、これだどスケールがわかりづらいのでlogスケールに変更してみます。

 

 

結果がこちら。

さっきよりも感染者数の比較的少ない国々の情報がつぶれずに、ちゃんと色で表されていますね!

 

アニメーション機能付きのコロプレス図

Plotly Expressの良いところは簡単にアニメーションをコロプレス図にも付けられるところだと思います。

なので、そのアニメーション機能を使って、時系列的に動かして、感染者数が月ごとにどのように変化するかわかるようなコロプレス図を作ってみましょう!

※日ごとでもいいのですが、マシンスペック的に日ごとだと止まってしまうので、今回は月ごととします。

まずは日付をdate型に変換して、月ごとに集計していきます。

 

これで準備ができたのでアニメーション付きコロプレス図を作ります。

アニメーションは、animation_frameの引数に"date"を指定するだけです。

 

画像になっているので止まっていますが、再生ボタンを押せば自動で時系列変化を表すアニメーションが動きますし、自分でスライダーでdateを選ぶこともできます。

こんな感じでPlotly Expressを使って簡単にアニメーション付きのコロプレス図を作る事ができました!

ネットとかで見るような図が簡単に作れたりするので、よろしければやってみてください。

おすすめ記事

1

お疲れさまです! 久しぶりの更新になってしまいましたが、僕が未経験からデータサイエンティストになるまでの転職活動の全記録を書き残しておきたいと思います。 僕は博士号を取得後に研究員として仕事をしていま ...

2

こんにちわ、さとしです! 気がつけばこのデータサイエンティスト転職から、1年が経とうとしています。 今はご時世的に外にも出られず、変化があまりない生活を送ったせいもあってか、なんかあっという間に1年が ...

3

データサイエンティストに転職して1年が経ち、いろいろな業務を経験させてもらいつつ、自分でもある程度本を読んできました。 仕事の話は下記の記事で書きましたが、自分で読んだ本については書いていないのでこの ...

-Python

Copyright© さとぶろぐ , 2023 All Rights Reserved Powered by AFFINGER5.