streamlitアプリでユーザーの選択によって表示するグラフを変えたい。 例えば、selectboxやradioにはon_changeという引数があるので、
def draw(item_name): ax.plot(df.query(f"item == {item_name}")) return ax item_name = st.selectbox(item_name, options = ["food", "furniture", "drink"], on_change=draw, args = (item_name)) fig = flt.figure() ax = fig.add_subplot(1,1,1) st.pyplot(fig)
とやってみてもうまくargsが引き渡せず動かなかった。
ところが、on_changeをやめて
def draw(item_name): ax.plot(df.query(f"item == {item_name}")) return ax item_name = st.selectbox(item_name, options = ["food", "furniture", "drink"]) fig = flt.figure() ax = fig.add_subplot(1,1,1) draw(item_name) st.pyplot(fig)
これで、selectboxが呼び出されるたびにdrawが呼び出されて動的に描写が変わる。 on_changeの意味がいまいちわからない