Streamlitで簡単なWEBアプリの作成

Pocket

StreamlitでBVLEプロットアプリの作成

Webアプリを作成するためにFlaskやDjangoを勉強していましたが、なかなかGUIの作成まで辿りつかないまま挫折していました。

今回Streamlitという素晴らしいモジュールと出会ったので、こちらを使って簡単なBVLEプロットアプリを作成してみました。

先に動作イメージは以下のような感じです。

サブウィンドウ、スライダー、ラジオボタンや入力ボックスの設置、グラフ表示等を簡単に行うことができます。

またLatexも使うことができます!

サイドバーへの表示、ラジオボタンの設置

サイドバーへの表示、ラジオボタンの設置は以下のように設定できます。

サイドバーは、sidebarを間に挟むだけす。

ラジオボタンは、radio(表示文字列、(選択肢1、選択肢2))で設定できます。

# サイドバーへの表示は、sidebarを追加
st.sidebar.subheader("計算条件")
methods = st.sidebar.radio(
     "物性推算法を選択してください",
     ('Wilson', 'NRTL'))
spec = st.sidebar.radio(
     "T spec or P spec?",
     ('T spec', 'P spec'))

スライドバーの設置、入力ボックス、グラフの表示

スライドバーの設置はslidebar(表示文字列、最小値、最大値、刻み幅、初期阿合)で以下のように設定できます。

またグラフについては、例えばMatplotlibを使う場合、事前に定義したfigをwrite()でそのまま表示できます。

if spec == 'T spec':
    # スライドバー
    T = st.sidebar.slider('Temperature[K]', min_value=300, max_value=500, step=1, value=300)
    st.sidebar.write("Temperature: ", T, '[K]')
else:
    P = st.sidebar.slider('Pressure[kPa]', min_value=50, max_value=500, step=1, value=100)
    st.sidebar.write("Pressure: ", P, '[kPa]')
# 入力ボックスの表示
xnum = st.sidebar.number_input('組成の刻み幅', 0, 51, 21)

#グラフ表示
fig = plt.figure(figsize=(10, 8))
,,,
st.write(fig)

以上、簡単ですが上の動画と合わせてみていただくと、動作イメージが掴みやすいかと思います。

これほど簡単にInteractiveなGUIを作れるモジュールがあるとは知りませんでした。

Pocket

コメント

タイトルとURLをコピーしました