8
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Pythonで特定の国を特定の色で分類したインタラクティブな世界地図を作る (folium)

Last updated at Posted at 2021-05-08

はじめに

Pythonで地図の描画によく使われるであるfoliumで、グループAの国は赤色でグルーブBの国は青色で塗り分けたみたいな地図を作るのはどうしたらいいんだろう...となったのでまとめさせていただきます

ちなみに以下の図のような地図にしてHTMLに出力することができます

  • スクリーンショット
    スクリーンショット 2021-05-02 2.52.31.png

  • 出力されたHTML

  • (ちなみにこの記事書くのに使いました)

foliumで作れる地図

依存ライブラリ

folium==0.11.0
geopandas==0.9.0

以下の記事のようにコロプレス図と呼ばれる大小関係(eg: 都道府県別の新規コロナウイルス感染者数の日本地図)を表す地図はChoroplethというメソッドでmapオブジェクトに表示できるようです。この場合、どの国がどの色になるのかは連続的な(シーケンシャルな)カラーマップと対応する値で自動で決まります。しかしこれではカテゴリごとの色分けは不可能です

そこでたどり着いたのが次の記事で、この実装の国を各カテゴリに色分けしている部分のみを取り出して紹介したいと思います

geopandasから国境のJSONを読んでfoliumで表示

import folium
import geopandas as gpd

gdf = gpd.read_file('https://raw.githubusercontent.com/johan/world.geo.json/master/countries.geo.json') # ローカルに落としてからでもよい

このgdfには各国の国境を描く緯度・経度のセットが入っています
スクリーンショット 2021-05-09 2.13.40.png
これらの国を何らかの基準でカテゴリ分けします
今回はAから始まる国とBから始まる国の2カテゴリにしてみます

gdf['Group'] = ''
gdf.loc[gdf.name.str.startswith("A"), 'Group'] = 'A'
gdf.loc[gdf.name.str.startswith("B"), 'Group'] = 'B'

folium.GeoJsonにこのdataFrameの該当行を渡し、描画の設定をすることで好きな色で国に色をつけられます

m = folium.Map(location=[0, 0], zoom_start=2)

folium.GeoJson(gdf[gdf['Group']=='A'], 
               # レンダリングする表示の線や色の設定ができます
               style_function=lambda x: {'fillColor': 'red', 'color': 'red'}, 
               # マウスホバー時のツールチップの設定ができます
               tooltip=folium.features.GeoJsonTooltip(fields=['name', 'Group'],labels=True, sticky=True)
               ).add_to(m)
folium.GeoJson(gdf[gdf['Group']=='B'], 
               style_function=lambda x: {'fillColor': 'blue', 'color': 'blue'}, 
               tooltip=folium.features.GeoJsonTooltip(fields=['name', 'Group'],labels=True, sticky=True)
               ).add_to(m)m

これによりできたmapオブジェクトmは次のような表示になります。ホバーした国には指定したカラムの情報が表示されます
スクリーンショット 2021-05-09 2.20.41.png

8
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?