我正在用plotly开发一个图表,它工作得很好,但我想在单击绘图上的任何点时使用st.write在屏幕上显示一些信息。在plotly中,这可以使用on_click方法轻松完成。但它不适用于streamlit。我尝试过另一个名为plotly events的库,但它在新版本的streamlit中生成黑白图表。
该图是一个简单的散点图。
import streamlit as st
import plotly.express as px
def click(trace, points, selector):
st.write("hello")
x = [1,2,3]
y = [4,5,6]
z = [10,11,2]
fig = px.scatter(x=x, y=y, size = z)
fig.data[0].on_click(click)
st.plotly_chart(fig, use_container_width=True)
顺便说一句,如果将 Fig.data[0] 行放在 st.plotly_chart 行之后也没关系,因为它仍然不起作用。请帮忙
以下代码将 Plotly 的点击功能与 Streamlit 集成,并在单击散点图上的点时显示信息:
import streamlit as st
import plotly.express as px
def click(trace, points, selector):
selected_point = points.point_inds[0]
x_val = fig.data[0].x[selected_point]
y_val = fig.data[0].y[selected_point]
st.write(f"Clicked point: x={x_val}, y={y_val}")
x = [1, 2, 3]
y = [4, 5, 6]
z = [10, 11, 2]
fig = px.scatter(x=x, y=y, size=z)
fig.data[0].on_click(click)
st.plotly_chart(fig, use_container_width=True)
在此代码中,当单击散点图上的点时,将调用
click
函数。它检索所选点的索引,然后从散点图数据中访问相应的 x
和 y
值。然后使用 st.write
显示信息。这样,当您点击散点图中的某个点时,该点的信息就会显示在 Streamlit 界面上。