県別データの可視化で紹介されている japanmap ライブラリを使って日本地図を描いてみます。
まずは pip install japanmap
でインストールします。インポートして、まずは都道府県名を列挙してみます。
import japanmap as jp jp.pref_names
['_', '北海道', '青森県', '岩手県', ……中略…… '沖縄県']
最初(第0要素)に無意味なものが入っているのは、都道府県コードと要素番号を一致させるためのようです。
PNG画像の白地図を描いてみます:
import matplotlib.pyplot as plt plt.imshow(jp.picture())
例として、がんの分布で紹介したデータを読み込んで地図に色を塗ってみます:
import pandas as pd df = pd.read_csv("https://okumuralab.org/~okumura/stat/data/gansokuhou2016.csv") x = df["年齢調整罹患率日本総数"][1:48] x = (x - min(x)) / (max(x) - min(x)) cmap = plt.get_cmap("bwr") # or "coolwarm" or "cividis_r" etc... d = {i: cmap(x[i], bytes=True) for i in range(1,48)} plt.imshow(jp.picture(d)) # 不要なティックやラベルを削除する plt.tick_params(bottom=False, top=False, left=False, right=False, labelbottom=False, labeltop=False, labelleft=False, labelright=False) plt.savefig("190613a.png", bbox_inches="tight")
カラーマップについては matplotlib の Colormap reference を参照してください。
SVG の図を出力することもできます:
cmap = plt.get_cmap("coolwarm") cols = ["#%02X%02X%02X" % (cmap(x[i], bytes=True)[:3]) for i in range(1,48)] s = jp.pref_map(range(1,48), # qpqo=jp.get_data(move_okinawa=True), cols=cols, tostr=True) # 境界線を黒で描くには: # s = s.replace('<path ', '<path stroke="black" stroke-width="0.001" ') with open("190613b.svg", "w") as f: f.write(s)