グランメゾン東京をみているので
ミシュランの三つ星店が気になってしまいました。

ミシュランの星のついたお店群を
いい感じのライブラリがあったので
可視化してみました。

解説動画はこちら



さて今回使用する可視化のライブラリは
Foliumです。

緯度経度を使用して
いい感じに地図にマッピングできます。

foliumを使うにはインストールしないといけません

まずはインストールしておきましょう。

pip install folium

可視化するにはデータが必要です。

次のようなデータを作りました。
スクリーンショット 2019-12-29 20.31.33

必要な項目としては
お店の名前、星の数、ジャンル、住所、緯度経度などが必要です。

データを集めたら
Foliumを使って可視化です。

地図にマッピングした
HTMLファイルを作成することができます。

実際に作成したコードを貼っておきます。
import folium
from folium.features import CustomIcon
import pandas as pd

stars = {
'一つ星'        :'star1.png',
'二つ星'        :'star2.png',
'三つ星'        :'star3.png',
'ビブグルマン'  :'starbib.png'
}

def makeicon(icon_image):
    icon = CustomIcon(
    icon_image=icon_image,
    icon_size=(30, 30),
    icon_anchor=(30, 30),
    shadow_image='',
    shadow_size=(5, 5),
    shadow_anchor=(4, 4),
    popup_anchor=(-3, -3))
    return icon

def make_maker(r):
    tmp = folium.Marker(
        location = [r['longitude'],r['latitude']], 
        popup    = r['name'] + ' : ' + r['genre'],
        tooltip  = r['name'] + ' : ' + r['genre'] + ' : ' + r['address'].replace('東京都',''),
        icon     = makeicon(stars[r['star']]))
    return tmp

michelin_data = pd.read_table('michelin_data_2020.csv')

plot_map = folium.Map(location=[35.6725175,139.7210145] ,  zoom_start=12)

star1_group = folium.FeatureGroup(name="一つ星").add_to(plot_map)
star2_group = folium.FeatureGroup(name="二つ星").add_to(plot_map)
star3_group = folium.FeatureGroup(name="三つ星").add_to(plot_map)
bib_group   = folium.FeatureGroup(name="ビブグルマン").add_to(plot_map)

for i, r in michelin_data[michelin_data['star']=='一つ星'].iterrows():
    star1_group.add_child(make_maker(r))
for i, r in michelin_data[michelin_data['star']=='二つ星'].iterrows():
    star2_group.add_child(make_maker(r))
for i, r in michelin_data[michelin_data['star']=='三つ星'].iterrows():
    star3_group.add_child(make_maker(r))
for i, r in michelin_data[michelin_data['star']=='ビブグルマン'].iterrows():
    bib_group.add_child(make_maker(r))

folium.LayerControl().add_to(plot_map)
plot_map.save("mishelin_all_maps.html")

コードの説明ですが
まず星を出し分けるためにカスタムアイコンを用います。

CostomIconをインポートしておきます。

folium.Mapで初期マップを作ります。
緯度経度とズーム値を指定して
どこの地点から始めるのかを指定できます。

この初期マップにお店を一軒ずつ加えていきます。

グループ化しておくと
アイコンを点けたり消したり出来るので
星の種別ごとにグループ化しておきます。

グループごとにお店を加えて
LayerControlで出し分けをするための
パーツを作れます。

最後saveでHTMLファイルに出力をして
おしまいです。

出来上がりはこんな感じです。
スクリーンショット 2019-12-29 20.39.52

3つ星のお店だけ表示させました。

Foliumでは星ごとに出し入れ出来るので
右上のパーツを押してみてください。


出来上がりをリンクしておきますね。
ミシュランの3つ星のお店

400店舗ほどあるので
行きたい方はぜひ使ってみてください。

さて
緯度経度を用いた可視化も
Pythonを使えば簡単にできます。

ぜひ試してみてくださいね

グランメゾン東京の最終回も楽しみですね!!!

それでは