##Streamlitについて
簡易的なWebアプリが迅速に作成・デプロイできるツールです。
動的なグラフなどを短いコードで作成でき、しかもPythonだけで完結します。最近は徐々に認知度が高くなっており、利用者も増加傾向にあるようです。
公式へのリンクは下記に貼っておきます。
##地図上にピンとエリアを表示する
地図ツールのfoliumとstreamlitを組み合わせたPythonのサンプルコードです。
地図の上にスライダーをつけて拠点からの半径を調整できるようにしました。
VSCodeなどでファイルを作成してください。
import folium
from streamlit_folium import folium_static
import streamlit as st
import pandas as pd
# サンプル用の緯度経度データを作成する
sales_office = pd.DataFrame(
data=[[32.0,131.1],
[33.1,131.2],
[34.2,131.3]],
index=["本社","A営業所","B営業所"],
columns=["x","y"]
)
# データを地図に渡す関数を作成する
def AreaMarker(df,m):
for index, r in df.iterrows():
# ピンをおく
folium.Marker(
location=[r.x, r.y],
popup=index,
).add_to(m)
# 円を重ねる
folium.Circle(
radius=rad*1000,
location=[r.x, r.y],
popup=index,
color="yellow",
fill=True,
fill_opacity=0.07
).add_to(m)
# ------------------------画面作成------------------------
st.title("サンプル地図") # タイトル
rad = st.slider('拠点を中心とした円の半径(km)',
value=40,min_value=5, max_value=50) # スライダーをつける
st.subheader("各拠点からの距離{:,}km".format(rad)) # 半径の距離を表示
m = folium.Map(location=[33.1,131.0], zoom_start=7) # 地図の初期設定
AreaMarker(sales_office,m) # データを地図渡す
folium_static(m) # 地図情報を表示
ターミナルでファイルを実行します。
streamlit run [ファイル名]
※この地図は拡大と縮小ができます。
上記で50行以下のコードです。またStreamlitでは、以下のことも簡単に実装できます。
・サイドバーや各種ボタンをつける
・ファイルをアップロードする
・テーブルデータを表示する
・Plotlyやdashなどの可視化ライブラリを組み合わせて表示する
これ以外にも応用例がたくさんあり、機械学習のモデル検証などにも活用されています。