Streamlit紹介¶
Streamlitは、Streamlit社が開発したWebアプリケーションのフレームワークです。 Streamlitを使うと、データ分析やAI処理などのコードを簡単にWebアプリケーションにして、他の人に利用してもらえます。
Webアプリケーションを作成するためには、Pythonのコードを書くだけです。HTMLを書く必要はありません。
本ページでは、Streamlitライブラリー(Apache 2.0 license)の概要を紹介します。 Streamlit社では、その他にホスティングやデプロイメントサービスを提供しています。利用規約については、下記を参照ください。
ドキュメント: https://docs.streamlit.io/
インストール¶
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
は、「lat
かlatitude
」と「lon
かlongitude
」の列が必要です。
色々な部品¶
st.latex(...)
でLaTeXを表示します。st.table(df)
で固定の表を表示します。st.json(...)
でJSONオブジェクトを表示します。st.image(...)
で画像を表示します。streamlit.imagest.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(...)
:例外出力。