[Python] Foliumのコロプレス図(Choropleth)でデータがないと黒くなる箇所を白くする


How to make black colored area in Folium Choropleth white where data is missing; simply set the nan_fill_color

この記事について

現在、Foliumのコロプレス図(Choropleth)を勉強中ですが、ネットに掲載されているものはきちんと動かないものが多く、苦労しています。そんな中、こちらのサイトのものはきちんと動作して、非常に参考になりました。

Pythonでビックマック指数のヒートマップ世界地図を作ってみる
https://techray.hatenablog.com/entry/2019/12/16/200248

しかし、表示される地図で、ビックマック指数がないところ(マクドナルドの店舗がないところ?!)は黒くなり、ちょっと見ずらいです。(厳密にはダークグレーですが、黒として進めます)

BEFORE (こんな感じ)

AFTER ちょっと、黒を白くしてみました!

こうしてみると、一番、ビッグマックが高いのはスイスであることが分かりやすかと思います。

何を変えたか

元のサイトに掲載されるデータはそちらで見ていただきたいのですが、以下、nan_fill_colorという箇所を1行追加しました。


# 地図に色を塗る
folium.Choropleth(
geo_data=geojson,
name='choropleth',
data=df,# 描画データ
columns=['iso_a3', 'dollar_price'], # ["国コード", "値の列"]
key_on='feature.id',
fill_color='OrRd',# 色指定
fill_opacity=0.7, # 色の透明度
line_opacity=1,#国境線の透明度
nan_fill_color="white",  ####  ここでdfにない国は白にする!!! #####
legend_name='big mac index dollar_price' #凡例
).add_to(m)

これはFoliumのdocumentationに記載されていましたが、あまり知られていないようです。
https://python-visualization.github.io/folium/modules.html

nan_fill_color (string, default 'black') – Area fill color for nan or missing values. Can pass a hex code, color name.

値のないものはNaN扱いとなり、その色を指定できるようです。
色を指示する他にも透明度を変えることもできるそうです。

その他

こちらのコロプレス図のデータは、けっこう粗かった。日本はこんな感じ。。

結局、境界線をポイントでつないでポリゴンで表現していることが分かりやすい。