この記事は Origami Advent Calendar の記事になります
概要
PythonによるData Visualization(データ可視化)の手法はmatplotlibやseabornを用いるのがよく聞く話かもしれませんが、今回は「folium」というライブラリを紹介したいと思います。
foliumはleafletというJavaScriptのOSSを使ったデータ可視化のライブラリで地図を使った表現の多さに強みがあります。
なので棒グラフやヒストグラム、散布図を出力したい場合は適宜matplotlibやseabornを使う方が良いのですが、位置情報が伴うデータに関してはfolium一択です(断言)
では、foliumでどういった事が出来るのかを紹介します。
環境
- Mac OSX El Capitan(10.11.6)
- Python(3.5.1)
- jupyter lab(0.2.1)
インストール
$ pip install folium
地図を表示
まずは地図を表示してみます。folium.Map
でオプションは location
及び zoom_start
を使っていますが他にもtiles(地図の見た目を変える)
があり、 Stamen Toner
や Stamen Terrain
などが選択できます。
import folium
m = folium.Map(location=[35.681382, 139.76608399999998], zoom_start=14) #東京駅の緯度経度
m
地図上に点をプロット
まずはコードを貼ります。
import folium
m = folium.Map(location=[35.681382, 139.76608399999998], zoom_start=12)
folium.Marker([35.658581, 139.745433], popup='Tokyo tower', icon=folium.Icon(color='blue')).add_to(m)
folium.Marker([35.710063, 139.8107], popup='Tokyo skytree', icon=folium.Icon(color='blue', icon='cloud')).add_to(m)
m
先ほど用意した地図に対して Maker
を追加することで地図状にプロットする事が出来ます。オプションは
- popup : コメントを残す
- color : Makerに色付け
- icon : Makerにアイコン付け
などがあり、iconはfontawesomeを利用していてデフォルトでは info-sign
となっています。またデフォルトの色と対応している色はここに記載されています
地図状に円をプロット
CircleMarker
を使う事で地図上に円を描写する事ができます。radiusの単位はm
, colorやfilcolorを設定できます。
import folium
m = folium.Map(location=[35.681382, 139.76608399999998], zoom_start=12)
folium.Marker([35.658581, 139.745433], popup='Tokyo tower', icon=folium.Icon(color='blue')).add_to(m)
folium.Marker([35.710063, 139.8107], popup='Tokyo skytree', icon=folium.Icon(color='blue', icon='bookmark')).add_to(m)
folium.CircleMarker(
location=[35.681382, 139.76608399999998],
radius=2000,
popup='Tokyo Station',
color='#3186cc',
fill_color='#3186cc'
).add_to(m)
m
まとめ
ここで紹介したのは機能のほんの一部でしかありませんが、例えばクラスタリングの結果を pandas.Dataframe
や numpy.array
に格納して地図状に表示するという事が簡単に出来るので位置情報に絡んだデータ分析をしている人は是非使ってみてください。foliumにはexampleがが豊富にあるので楽しくデータ可視化を試せると思います。