Bi-directional Plotly Component

Hey folks!

I needed plot interactivity for a project, so I’ve put together a simple component that sends Plotly events back to Streamlit! Obviously this repo is pretty early-on, but I thought I’d make a post about it.

Currently you can configure the component to send back click, select, and hover events for plotly. Some of the features I hope to implement are:

  • Automatic layer generation to change the cursor to a pointer (to help indicate it’s clickable) (
  • State stuff so select operations don’t cause the plot to reset
  • And more!

Anyways, I’m not much of a frontend developer, so if anyone want’s to help out, you’re welcome to!

Happy coding :slight_smile:


Welcome @null-jones to the community and thanks for the amazing contribution :slight_smile: :slight_smile: . Hopefully we’ll be able to help you test it and fix the small edge cases.
Also it’s awesome to see we don’t need to be too much of a frontend developer to actually build components (my only frontend experience is also building those Streamlit components ahah)


Great job! Always waiting for such a component! And hope it will support zoom event and can get range of different axis as a returned value.

Hi @null-jones and thanks for the Plotly component. I was looking exactly for this type of functionality for a demo based in streamlit I working on. I’m having however an issue when using it. I using @andfanilo example to test it but unfortunately lasso selection is not working. Only single point selection.

I’m using streamlit version 1.15.1, with python 3.10, and streamlit_plotly_events directly from pip install

Any help would welcome. Thanks!

So, I just realised I was not using the lasso itself (only the default lasso from the initial visualization). :man_facepalming:

Sorry about that and thanks anyway. :slight_smile:

1 Like

Writing about a problem to others really is half the solving :slight_smile: have a nice day!

1 Like

is it possible to update the plot automaticallt after a click event ?