import folium import pandas as pd # 仮の人口移動データ data = { "都道府県": ["東京都", "埼玉県", "神奈川県", "千葉県", "栃木県"], "移動人数": [5000, 3000, 2000, 1500, 1000] } df = pd.DataFrame(data) # 群馬県と各都道府県の座標(簡易的に都道府県庁所在地を使用) coords = { "群馬県": [36.3907, 139.0604], # 前橋市(群馬県庁) "東京都": [35.6895, 139.6917], # 東京都庁 "埼玉県": [35.8570, 139.6489], # さいたま市(埼玉県庁) "神奈川県": [35.4475, 139.6423], # 横浜市(神奈川県庁) "千葉県": [35.6051, 140.1233], # 千葉市(千葉県庁) "栃木県": [36.5657, 139.8836] # 宇都宮市(栃木県庁) } # 群馬県の座標 gunma_coords = coords["群馬県"] # Foliumマップの初期化(群馬県を中心) m = folium.Map(location=gunma_coords, zoom_start=7, tiles="cartodbpositron") # 群馬県にマーカーを追加 folium.Marker( gunma_coords, popup="群馬県", icon=folium.Icon(color="red") ).add_to(m) # 流線図の描画 max_flow = df["移動人数"].max() # 線の太さの基準 for index, row in df.iterrows(): dest_coords = coords[row["都道府県"]] # 移動人数に応じた線の太さ(正規化) weight = (row["移動人数"] / max_flow) * 10 # 最大10px # 流線を描画 folium.PolyLine( locations=[gunma_coords, dest_coords], weight=weight, color="blue", opacity=0.6, popup=f"{row['都道府県']}: {row['移動人数']}人" ).add_to(m) # 移動先のマーカーを追加 folium.Marker( dest_coords, popup=row["都道府県"] ).add_to(m) # マップをHTMLファイルとして保存 m.save("gunma_population_flow_2024_sample.html") print("地図が 'gunma_population_flow_2024_sample.html' として保存されました。") inserted by FC2 system