Plotly scatter click is unreliable and slow in Streamlit

I’m building an embedding visualizer for drift detection using Streamlit + Plotly. I need to:

  • Click on a scatter point (embedding)
  • Get a URL from customdata
  • Load and display the image

I’ve tried using streamlit-plotly-events2 and also st.plotly_chart(..., on_select="rerun"), but both approaches are either too slow (2–3s lag) or don’t reliably capture multiple clicks.

Here’s a minimal working example ):

clicked_points = plotly_events(fig, click_event=True, key="plot_click")
if clicked_points and 'pointIndex' in clicked_points[0]:
    idx = clicked_points[0]['pointIndex']
    url = current_urls[idx]
    st.image(fetch_image_from_url(url))  # simplified

But clicks are flaky — sometimes the plot refreshes but no point is selected. Other times it’s just slow.
How do i

  • Reliably capture click events?
  • Extract customdata from the clicked point?
  • Avoid the latency or missed clicks?

Any working example or guidance would be appreciated!Im doing it in my local itself

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.