サイトアイコン アマチュア無線局JS2IIU

Streamlit カスタムレイアウト応用編:第7回 Sidebar

こんにちは、JS2IIUです。Streamlitのレイアウト要素について紹介してきました、残り第7回、第8回の2回となりました。今回もよろしくお願いします。

はじめに

Streamlitのレイアウト機能の一つ、Sidebarについて解説します。Sidebarは、画面の左側にサイドバーを設置し、インタラクティブなUIパーツを配置することで、ユーザーがデータやオプションを直感的に選択できるエリアを提供します。ダッシュボードやアプリケーションの操作性を高め、データのフィルタリングや設定オプションの選択などに活用されています。

Sidebarの基本的な使い方

StreamlitでSidebarを使用するには、st.sidebarを利用します。このエリアには、ボタン、テキスト入力、スライダーなどのウィジェットを配置することができ、st.sidebarを使うことでメインコンテンツとは別に配置されます。

Sidebarの基本構文

import streamlit as st

# サイドバーにウィジェットを配置
st.sidebar.title("サイドバータイトル")
st.sidebar.write("サイドバーに配置されたテキスト")

# サイドバー内にボタンやスライダーなどのウィジェットを配置
button_clicked = st.sidebar.button("サイドバーのボタン")
slider_value = st.sidebar.slider("サイドバースライダー", 0, 100, 50)

上記のコードでは、st.sidebar.title()およびst.sidebar.write()を使ってサイドバーにテキストを表示し、st.sidebar.button()st.sidebar.slider()でボタンとスライダーを追加しています。

Streamlitのdocumentationには次のように説明されています。

Not only can you add interactivity to your app with widgets, you can organize them into a sidebar. Elements can be passed to st.sidebar using object notation and with notation.

ウィジェットでアプリにインタラクティブ性を追加できるだけでなく、それらをサイドバーに整理することもできます。st.sidebarには、オブジェクト記法と記法を使って要素を渡すことができます。

st.sidebar - Streamlit Docs
st.sidebar displays items in a sidebar.

Sidebarで使えるウィジェット

Sidebarには、以下のようなさまざまなウィジェットを配置できます:

サイドバーの実用例

以下に、サイドバーでデータフィルタリングやインタラクティブなデータの可視化を行う例を示します。

import streamlit as st
import pandas as pd
import numpy as np

# サンプルデータ生成
data = pd.DataFrame({
    'カテゴリ': ['A', 'B', 'C', 'D'],
    '値': np.random.randint(1, 100, 4)
})

# サイドバーにフィルターオプションを追加
st.sidebar.title("フィルター設定")
selected_category = st.sidebar.selectbox("カテゴリを選択してください", data['カテゴリ'].unique())
value_range = st.sidebar.slider("値の範囲を選択してください", int(data['値'].min()), int(data['値'].max()), (10, 90))

# サイドバーの選択に基づいてデータをフィルタリング
filtered_data = data[(data['カテゴリ'] == selected_category) & (data['値'].between(*value_range))]

# フィルタリング後のデータ表示
st.write("選択されたカテゴリと範囲でのデータ")
st.write(filtered_data)

コードの解説

  1. サイドバーの設定:
  1. データのフィルタリング:

Sidebar使用時の注意点

このように、SidebarはUIの操作性やインタラクティブ性を高めるために便利な要素です。

モバイルバージョンを終了