第4章 地図の表示
熊本の医療機関を種類毎に地図に表示します。 foliumをstreamlitで使用するにはstreamlit-foliumを使用します。
まず、st_map.py ファイルにタイトルとセレクトボックスを配置します。
import streamlit as st
import folium
from folium.plugins import MarkerCluster
from streamlit_folium import folium_static
st.title('熊本医療機関')
sel = st.selectbox("種類", ["内科", "外科", "小児科"])
地図をmapオブジェクトに作ります。
map = folium.Map(location=[32.8032, 130.7080],zoom_start = 15)
pandasでデータを読み込みます。
import pandas as pd
df = pd.read_csv("122542.csv")
dfから一行ずつ取り出して処理します。診療科目は ; で区切られているので分割し、選択された種類があるかどうかを調べ、あるようならマーカーを配置しています。
marker_cluster = MarkerCluster()
for index, row in df.iterrows():
types = str(row['診療科目']).split(';')
if sel in types:
lat = row['緯度']
lng = row['経度']
width = len(row['名称'])
popup = f'<div style="width:{width}em">{row["名称"]}</div>'
marker = folium.Marker([lat, lng], popup=popup)
marker.add_to(marker_cluster)
marker_cluster.add_to(map)
最後にfolium_static関数で地図を表示してみます。
folium_static(map)