今回は都道府県別に集計されたデータを日本地図に色分け表示させる方法を紹介します!
都道府県ごとに色分けするってことは、日本地図のデータとか必要なんですか?
難しそう。。面倒くさそう。。
確かに、難しそうなイメージが湧きますよね!
でも、大丈夫です! ここでもライブラリを活用します。
今回、活用するライブラリは「japanmap」です。読んで字のごとく、日本地図を簡単に描くことができます。
ライブラリのインストール
「Japanmap」と「Matplotlib 」というライブラリを使うことで日本地図を可視化することができます!
「Japanmap」は簡単に日本地図を表示させることができるライブラリです。
「Matplotlib 」はグラフは文字情報を描画させるライブラリです。今回は地図を表示させるために活用します。
まずは「Japanmap」と「Matplotlib 」をインストールしましょう!
下記のコードを入力してターミナルでインストールしましょう。
pip install japanmap
pip install matplotlib
基本コード
地図を表示させる手順は3つです。
全体コードはこんな感じです!(コピペして動かしてみてください!)
import matplotlib.pyplot as plt
from japanmap import picture
plt.rcParams['figure.figsize'] = (8, 8)
plt.imshow(picture())
表示させる情報の設定を行なっていないので、日本地図のみが表示されます。
いくつかの都道府県に色をつけてみましょう!
先ほどのコードにdata ={….}の部分が追加されています。
import matplotlib.pyplot as plt
from japanmap import picture
data = {
'北海道':(255, 0, 0),
'東京':(0, 255, 0),
'愛知':(0, 0, 255),
'大阪':'Orange',
'広島':'Purple',
'福岡':(255,255, 0)
}
plt.rcParams['figure.figsize'] = (8, 8)
plt.imshow(picture(data))
ライブラリをインポート
import matplotlib.pyplot as plt
from japanmap import picture
「Japanmap」と「Matplotlib 」を使うためにインポートを行なっています。
表示させるデータの設定
data = {
'北海道':(255, 0, 0),
'東京':(0, 255, 0),
'愛知':(0, 0, 255),
'大阪':'Orange',
'広島':'Purple',
'福岡':(255,255, 0)
}
表示させる都道府県のデータ設定をしています。
‘北海道’:(255, 0, 0)この部分で、‘都道府県名’:色の指定,をしています。色の指定はcolor名かRGB(255,255,255)で指定ができます。
JapanmapとMatplotlibを実行する
plt.rcParams['figure.figsize'] = (8, 8)
plt.imshow(picture(data))
この部分で描画させています。(8, 8)の数字を変更することで、表示させる図の大きさを変えられます。
pictureの()に表示させるデータの変数を入れることで日本地図にデータが反映されます。
plt.savefig('japan_colormap.png')
上記のコードを加えることで、表示させたデータを画像として保存することが可能です。
CSVデータによる色分け
今回はGithubから人口情報をダウンロードして、地図に反映させます。
https://github.com/code4fukui/population_jpにアクセスして、Codeをクリック、その後、Download ZIPをクリックしてデータをダウンロードしてください。(無料で活用できます。)
ダウンロードが完了したら、population_jp_2019.csvをpythonファイルと同じディレクトリに保存してください。
これで、準備完了です!
下記のコードで実行できます!
import pandas as pd
import matplotlib.pyplot as plt
from japanmap import picture
df = pd.read_csv('population_jp_2019.csv')
df = df[0:47].set_index('name_jp')
cmap = plt.get_cmap('Blues')
norm = plt.Normalize(vmin=df.population_jp.min(), vmax=df.population_jp.max())
fcol = lambda x: '#' + bytes(cmap(norm(x), bytes=True)[:3]).hex()
plt.rcParams['figure.figsize'] = 10, 10
plt.colorbar(plt.cm.ScalarMappable(norm, cmap))
plt.imshow(picture(df.population_jp.apply(fcol)))
※CSVのデータを使うため、Pandasをインポートする必要があります。
こんな感じで都道府県の人口を青色の濃淡が表示させることができました!
やっぱり東京は圧倒的ですw(当たり前ですが。。)
Googleトレンド取得した検索ボリュームによる色分け
Googleトレンドで取得し特定のキーワードの検索ボリュームを日本地図に反映させることも可能です。
マーケティング施策によって検索ボリュームに変化や地域による需要の違いなどを視覚的に把握することが来ます!
※ConnectionErrorが出た場合はGoogle Colaboratoryで実行してみてください!
from pytrends.request import TrendReq
from japanmap import picture
import matplotlib.pyplot as plt
import matplotlib.cm as cm
# キーワード設定
keyword = "python"
# Google Trends(トレンド)を使う準備
pytrends = TrendReq(hl='ja-JP', tz=-540)
kw_list = [keyword]
# googleにリクエストする。
pytrends.build_payload(kw_list, cat=0, timeframe='2021-11-01 2021-11-30', geo='JP', gprop='')
# 地域別のインタレストの取得
df = pytrends.interest_by_region(resolution='JP', inc_low_vol=True, inc_geo_code=True)
df['geoCode'] = df['geoCode'].str.replace('JP-', '').astype(int)
# データ作成
# 共通データ作成
cmap = plt.get_cmap('jet')
norm = plt.Normalize(vmin=df[keyword].min(), vmax=df[keyword].max())
# カラーバー用データを作成
mappable = cm.ScalarMappable(cmap=cmap, norm=norm)
mappable._A = []
# 日本地図用データを作成
fcol = lambda x: '#' + bytes(cmap(norm(x), bytes=True)[:3]).hex()
# 図を描画
# 図のベースを描く
plt.figure(figsize=(10,8))
# 日本地図を描く
plt.imshow(picture(df[keyword].apply(fcol)))
# カラーバーを描く
plt.colorbar(mappable)
こんな感じで表示されます!
今回は2021年11月1日〜30日の検索ボリューム(python)の地域別の濃淡を表示させています。
茨城、東京、神奈川、京都、愛知の検索数が多いようです。pythonはAIや機械学習などに使われているので、大学や大手メーカーが拠点を置いている地域で検索が多そうですね。 大阪は人口の割に検索ボリュームが大きくないので、AIや機械学習の研究や関連する企業がそこまで多くないのかも知れません。
GoogleトレンドからPythonでデータを取得する方法については下記の記事で紹介しています。
是非、参考になさってみてください!
終わりに
今回は都道府県別に集計されたデータを日本地図に色分け表示させる方法を紹介してきました!
皆さんの持っている都道府県別のデータを使って、可視化してみてください!
それではまた、他の記事で会いましょう〜!
おすすめ記事
Pythonを学べるおすすめのUdemy講座について下記の記事で紹介しています!
是非、参考になさってみてください!