Streamlit紹介

Streamlitは、Streamlit社が開発したWebアプリケーションのフレームワークです。 Streamlitを使うと、データ分析やAI処理などのコードを簡単にWebアプリケーションにして、他の人に利用してもらえます。

Webアプリケーションを作成するためには、Pythonのコードを書くだけです。HTMLを書く必要はありません。

本ページでは、Streamlitライブラリー(Apache 2.0 license)の概要を紹介します。 Streamlit社では、その他にホスティングやデプロイメントサービスを提供しています。利用規約については、下記を参照ください。

インストール

pip install streamlit

デモ

streamlit hello

実行方法

streamlit run Streamlitのオプション Pythonのファイル

※ StreamlitのオプションについてはView all configuration optionsを参照ください。

Pythonのファイルにオプションを渡すには--をつけます。

streamlit run Streamlitのオプション Pythonのファイル -- Pythonのファイルのオプション

書き方

最初に下記を記述します。

import streamlit as st

表示したいものは、基本的にst.write(オブジェクト)で表示できます。ただし、起動時のファイルに限り、多くのオブジェクトはそのまま書いても表示されます(デフォルト設定時)。

https://docs.streamlit.io/en/stable/api.html#streamlit.write

st.sidebarを使うとサイドバーに表示します。

VS Codeでは拡張機能のBrowser Previewを使うと、1画面で確認できて便利です。

処理の流れ

起動時やボタンを押すなどで、プログラムを先頭から(同一プロセスで)再実行します。 ※ @st.cacheを関数定義につけると、同一引数の呼び出しでキャッシュを使うようになります。

右上のメニューのRecord a screencastから動画を作成することもできます。

テキスト

st.text(...)で文字列を表示します。 以下のようにすると、実行中に表示文字列を変更します。

t = st.empty()  # 空で初期化し、ここに表示
for i in range(0, 101, 10):
    t.text(f"{i}")  # 表示内容変更
    time.sleep(0.2)
t.empty()  # 表示を空に

マークダウン

文字列リテラル、またはst.markdown(...)で記述します。

"""
# タイトル
- 箇条書き $ a_1 $
"""

タイトルなど

st.title('タイトル')
st.header('ヘッダー')
st.subheader('サブヘッダー')

上記は下記と同じです。

"""
# タイトル
## ヘッダー
### サブヘッダー
"""

コード

st.code("""
print('Hello')
""", language='python')

上記は下記と同じです。

"""
```python
print('Hello')
```
"""

DataFrame

st.dataframe(df)

dfがDataFrameのとき、上記または下記で表示します。 上記は、表示範囲を指定できます。

df

グラフ

色々なグラフを表示できます。

https://docs.streamlit.io/en/stable/api.html#display-charts

下記以外にもplotly、bokeh、pydeck、graphvizなど多くの種類のグラフを表示できます。

折れ線グラフ

st.line_chart(...)で表示します。

面グラフ

st.area_chart(...)で表示します。

棒グラフ

st.bar_chart(...)で表示します。

matplotlibの図

st.pyplot(...)で表示します。

地図

st.map(df)で地図表示できます。 dfは、「latlatitude」と「lonlongitude」の列が必要です。

色々な部品

  • st.latex(...)でLaTeXを表示します。

  • st.table(df)で固定の表を表示します。

  • st.json(...)でJSONオブジェクトを表示します。

  • st.image(...)で画像を表示します。streamlit.image

  • st.audio(...)で音声プレーヤーを表示します。

  • st.video(...)でビデオプレーヤーを表示します。

GUI部品

https://docs.streamlit.io/en/stable/api.html#display-interactive-widgets

  • st.button(...)でボタンを表示します。押すとTrueを返します。

  • st.checkbox(...)でチェックボックスを表示します。押すとTrue/Falseをトグルで返します。

  • st.radio(label, options, ...)でラジオボタンを表示します。

  • st.selectbox(...)で選択ボックスを表示します。

  • st.multiselect(...)で複数選択可能な選択ボックスを表示します。

  • st.slider(...)でスライダーを表示します。

  • st.select_slider(...)で選択式のスライダーを表示します。

  • st.text_input(...)でテキスト入力を表示します。

  • st.number_input(...)で数字入力を表示します。

  • st.text_area(...)でテキストエリアを表示します。

  • st.date_input(...)で日付入力を表示します。

  • st.time_input(...)で時刻入力を表示します。

  • st.file_uploader(...)でファイルアップローダーを表示します。

  • st.color_picker(...)でカラーピッカーを表示します。

レイアウト(ベータ版の機能)

レイアウトの調整ができます。

https://docs.streamlit.io/en/stable/api.html#lay-out-your-app

  • st.beta_columns(...)で水平方向に要素を並べます。

  • st.beta_expander(...)で表示/非表示切り替えができます。

その他

  • st.error(...):エラー出力。

  • st.warning(...):警告出力。

  • st.info(...):情報出力。

  • st.success(...):成功時出力。

  • st.exception(...):例外出力。