folium で地図上にマーカを配置
Python のライブラリである folium を用いることで,Leaflet ベースの地図上にマーカを効率的に配置できる。
folium は Python から Leaflet を直接扱えるため,Web 地図の可視化を簡便に実現できる。
本稿では,山手線の駅データを例に,folium を用いた地図描画の基本的な手順を示す。
Leaflet とは
本稿で用いた Leaflet とは,広く利用されている Web 地図のための JavaScript ライブラリである。
2011 年にリリースされ,モバイルとデスクトップの双方に対応し,HTML5 と CSS3 にも対応している。
軽量で扱いやすく,インタラクティブな地図アプリケーションの構築に適している。
プログラムの概要
本稿では,マーカに付与する駅名,緯度,経度を csv ファイルから読み込む。
以下に,山手線の駅名と緯度・経度を記載した csv ファイルの例を示す。
駅名,緯度,経度
東京,35.681382,139.766084
有楽町,35.675069,139.763328
新橋,35.665498,139.75964
浜松町,35.655646,139.756749
田町,35.645736,139.747575
Python,ライブラリのバージョン
csv データを効率的に取り扱うため,pandas ライブラリを併用する。
本稿で用いた Python とライブラリのバージョンを以下に示す。
- Python 3.7.4
- folium 0.14.0
- pandas 1.3.5
東京駅を中心にした地図の生成
まず,東京駅の緯度・経度を中心に地図を生成する。location には中心座標を指定し,zoom_start には地図の拡大倍率を指定する。
次に,csv で読み込んだ駅データを for 文で走査し,マーカをプロットする。location には緯度・経度,popup には駅名を代入する。最後に,生成した地図を html 形式で保存する。
以下にサンプルコードを示す。
import folium
import pandas as pd
# csvからのデータ読み込み(必要なカラムだけを抽出)
df = pd.read_csv('hoge.csv', usecols = ['駅名','緯度','経度'], encoding='utf-8')
# 地図生成(東京駅を中心に)
folium_map = folium.Map(location=[35.6809591,139.7673068],zoom_start=13)
# マーカプロット
for i, row in df.iterrows():
folium.Marker(
location=[row['緯度'], row['経度']],
popup=row['駅名'],
icon=folium.Icon(color='red')
).add_to(folium_map)
# 地図保存
folium_map.save('hoge.html')
山手線の駅を示す地図
上記のコードにより,山手線の駅を地図上にマーカでプロットできる。folium は Leaflet を内部で利用しており,Python から Web 地図を扱える点が大きな利点である。

folium では,通常のマーカに加えて サークルマーカ(folium.CircleMarker) も利用できる。
以下にサークルマーカの例を示す。
# サークルマーカープロット(外径色は赤,内径色は青)
folium.CircleMarker(
location=[row['緯度'], row['経度']],
radius=40,
color='#ff0000',
fill_color='#0000ff'
).add_to(folium_map)
radius でサークルの大きさを指定し,color で枠線色,fill_color で内部の色を指定する。駅の強調表示や領域の可視化に有用である。
参考文献
- folium
- Leaflet
- Qiita「Pythonのコードを1行書くだけで誰でも手軽にインタラクティブな地図アプリを作れるLeafmapを使ってみよう」
- Qiita「foliumの基本的な使い方とオープンデータ活用」
更新履歴
- 2023年1月2日 新規作成
- 2023年1月10日 サークルマーカの説明を追加
- 2024年1月22日 本文を加除修正
- 2026年7月24日 本文を加除修正

“folium で地図上にマーカを配置” に対して1件のコメントがあります。