以前から、聞いたことはあるけど使ったことがなかった Streamlit なのですが、キャッチアップする時間を確保できたので色々と検証していたところ、(筆者の主観ですが)驚くほど簡単に地図を表示できたので、ここにメモしておきたいと思います。
コードは次の通りです。
import streamlit as st
st.map()
たったこれだけで地図が表示できます。
ちなみに、streamlit のバージョンは 1.32.2
を使用しました。
st.map()
は st.pydeck_chart()
のラッパーだそうで、3D マップや点群などもサポートしているそうです。
公式サイトでは st.map()
や st.pydeck_chart()
の仕様やパラメータについて確認ができます。
県庁所在地をプロットしてみる
折角なので、県庁所在地をプロットしてみます。
今回は熊本、宮崎、鹿児島の3県分の緯度経度データを用意してみました。
※緯度経度はこちらのページから拝借しました。
import streamlit as st
# 緯度経度データ(10進数)
pref_list = [
{"longitude":130.741667, "latitude":32.789828}, # 熊本県
{"longitude":131.423855, "latitude":31.911090}, # 宮崎県
{"longitude":130.557981, "latitude":31.560148}, # 鹿児島県
]
st.map(pref_list)
プロットも非常に簡単で、データを用意してmap()
に渡すだけです。
pandas.DataFrame や Iterable、dict など、多数の型に対応しているようです。
すこし見づらいかも知れませんが、3つの赤い点がプロットされていることを確認できるかと思います。
さいごに
筆者はまだ試せていませんが、folium を Streamlit で使うためのラッパーである streamlit-folium もあるようで、こちらを使えば、よりリッチな表現ができそうです。
また、streamlit インストール後に streamlit hello
コマンドを実行するとデモページを起動することができ、こちらのデモページは見ているだけでも楽しかったので、興味のある方は是非ご覧ください。地図を使ったデモも用意されています。