📍 あなたが今見ているもの
都道府県データ(SSDSE)や市区町村データを 地図に重ねる と、 「西日本に偏っている」「太平洋ベルトに集中」 といったパターンが一目でわかります。 棒グラフや散布図では見えない 空間構造 を可視化できるのが地理的可視化の強みです。
⚠️ よくある落とし穴
⚠️ 色覚バリアの無視
赤緑カラーマップは色覚多様性で区別困難。 → viridis や RdBu を選ぶ。
⚠️ 面積バイアス
北海道は面積が広いが人口が少ない。 面積で錯覚しやすい。 → 人口あたりで割る、 カートグラムを使う。
⚠️ MAUP
Modifiable Areal Unit Problem。 集計単位の選び方で結果が変わる。
⚠️ 古い境界データ
市町村合併で境界が変わる。 データ年と境界年を合わせる。
⚠️ 座標系の混在
WGS84 と旧日本測地系が混在すると数百メートルずれる。
🔎 地理可視化 ── 深掘り解説
地理可視化(Geographic Visualization) は、 緯度経度や行政区画と数値データを重ねて地理的傾向を可視化する手法。 都道府県別データの分析では必須。
🔖 キーワード索引(拡張)
地理可視化 Geographic Visualization matplotlib plotly seaborn 可視化 データ可視化 SSDSE-B 都道府県 色覚多様性 凡例 軸ラベル タイトル アクセシビリティ
📐 適用判断式
$$ \text{Color}(i) = \text{cmap}\!\left(\frac{x_i - x_\min}{x_\max - x_\min}\right) $$
🧮 他可視化との比較
タイプ 何を表す ライブラリ
コロプレス 領域の色で密度 geopandas/plotly
バブルマップ 点の大きさ folium/plotly
ヒートマップ 点密度推定 folium.HeatMap
フロー 起点-終点の移動 kepler.gl
🐍 Python 実装
📋 コピー # geopandas で都道府県コロプレス
import geopandas as gpd, pandas as pd, matplotlib.pyplot as plt
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='utf-8', skiprows=1)
df['高齢化率'] = df['A1301'] / df['A1101'] * 100
japan = gpd.read_file('data/raw/japan_pref.geojson') # 別途要DL
merged = japan.merge(df[['Prefecture','高齢化率']], left_on='nam_ja', right_on='Prefecture')
fig, ax = plt.subplots(figsize=(8,10))
merged.plot(column='高齢化率', cmap='OrRd', legend=True, ax=ax)
plt.tight_layout(); plt.savefig('choropleth.png', dpi=150)
📋 コピー # plotly choropleth
import plotly.express as px
fig = px.choropleth(df, locations='Prefecture', color='高齢化率',
color_continuous_scale='OrRd',
locationmode='geojson-id', scope='asia')
fig.write_html('choropleth.html')
📋 コピー # folium : インタラクティブな地図
import folium
m = folium.Map(location=[36, 138], zoom_start=5)
for _, r in df.iterrows():
folium.CircleMarker([36, 138], radius=r['高齢化率']/5,
popup=f"{r['Prefecture']} {r['高齢化率']:.1f}%").add_to(m)
m.save('map.html')
📋 コピー # 緯度経度を入手済みの場合のバブルマップ
df['lat'] = [43.06,40.82,39.70,38.27,39.72,38.24,37.75]+[0]*40 # 一部抜粋
df['lon'] = [141.35,140.74,141.15,140.87,140.10,140.36,140.47]+[0]*40
import matplotlib.pyplot as plt
plt.scatter(df['lon'], df['lat'], s=df['高齢化率']*3, alpha=0.6)
plt.savefig('bubble.png', dpi=150)
⚠️ 落とし穴(地理可視化固有)
❌ 軸の範囲を恣意的に切る
「ゼロ起点でない棒グラフ」のような誤誘導につながります。 必ず範囲を明示。
❌ 色を増やしすぎる
5 色を超えると識別が困難になります。 グループ化やパターンを併用。
❌ 凡例・タイトル不足
情報の出典・期間・単位を必ず記載。
❌ 印刷・モノクロでの崩壊
デジタル前提のカラーパレットが印刷で識別不能になることがあります。
🔗 関連用語(拡張)
📚 補足資料 — FAQ/追加コード/背景
FAQ ハンズオン SSDSE-B Python 事例研究 データ駆動 教育
❓ よくある質問 (FAQ)
地理可視化はいつ使うのが最適? 地理的傾向を示したい時。 都道府県・市区町村別の比較が代表例。
色の選び方は? 色覚多様性を考え viridis、 cividis、 ColorBrewer の colorblind-safe スキームを推奨。
matplotlib と Plotly どちらで描く? 静的論文は matplotlib、 探索/ダッシュボードは Plotly。 同じデータで両方残すと再利用可。
軸ラベル・凡例の必須情報は? 単位・出典・期間・サンプル数を必ず付ける。
印刷時のサイズは? 図の高さ・幅は 6×4 inch 程度を基本に。 dpi=150 以上で印刷品質。
🧪 SSDSE-B-2026 を使った追加計算例
可視化 対象 ライブラリ インタラクション コロプレス 領域別密度 geopandas 低 バブル 点ベース大小 folium 中 ヒートマップ 点密度推定 folium 中 フロー 起点-終点 kepler.gl 高 3D 高さ表現 deck.gl 高
🐍 さらにコードを書く
都道府県コロプレス(folium) 📋 コピー import folium, pandas as pd, json
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='utf-8', skiprows=1)
df['高齢化率'] = df['A1301']/df['A1101']*100
m = folium.Map(location=[36,138], zoom_start=5)
# geojson は別ファイル想定
# folium.Choropleth(geo_data='japan.geojson', data=df,
# columns=['Prefecture','高齢化率'], key_on='feature.properties.name_ja',
# fill_color='OrRd', legend_name='aging').add_to(m)
m.save('map.html')
緯度経度の最低限ペア 📋 コピー lat_lon = {
'東京都':(35.69,139.69),'大阪府':(34.69,135.50),
'北海道':(43.06,141.35),'沖縄県':(26.20,127.68),
}
for p, (lat, lon) in lat_lon.items():
print(p, lat, lon)
バブルマップ簡易版 📋 コピー import matplotlib.pyplot as plt
lats = [35.69, 34.69, 43.06, 26.20]
lons = [139.69, 135.50, 141.35, 127.68]
sizes = [200, 150, 180, 60]
plt.scatter(lons, lats, s=sizes, alpha=0.6, c='#E64A19')
plt.savefig('bubble.png', dpi=150)
💡 実務的アドバイス
1 図 1 メッセージ 。 詰め込みすぎない。キャプション に発見を 1 文で書く。軸の起点 を明示(ゼロでない場合は理由を)。カラー・形状 はカテゴリ間で一貫させる。
🕰 歴史的背景・発展経緯
地理可視化 は古典的可視化手法の一つで、 統計可視化の標準教科書 (Tufte, Cleveland) でも扱われます。
matplotlib (2003-) は MATLAB ライクな API で広く普及。 ggplot2 (R, 2007) で文法 of graphics が確立。 Vega-Lite / Altair (2017) が宣言型表現を Web に持ち込みました。
近年は SVG/Canvas/WebGL の多層実装が普及し、 大規模データでもブラウザ可視化が可能に。 GPU 利用の Datashader, deck.gl が研究機関で活躍。