Modo “Point Select” en la figura interactiva de plotly.
Estoy intentando adaptar este ejemplo de script de Plotly, que se encuentra en “https://plotly.com/python/v3/selection-events/”, para permitir poblar una tabla utilizando un evento de selección del mouse de Plotly. Estoy ejecutando este fragmento de código en un cuaderno Jupyter.
Como se señala en esta publicación de Stack Overflow “https://stackoverflow.com/questions/57290864/plotly-selection-events-scatter-plot-no-update-of-data-on-mouse-selection”:
Para activar tu propia función on_selection, simplemente activa el ícono "Box Select" o "Lasso Select" en los controles incorporados de tu figura.
De hecho, logro actualizar la tabla utilizando tanto la opción “Box Select” como la opción “Lasso Select” al activar el botón relevante en la figura interactiva, pero ¿cómo activaría la opción “Point Select”? Me gustaría seleccionar un solo punto en la gráfica de dispersión simplemente haciendo clic en él.
davy.ai
Para activar un evento de “Punto Select” en Plotly, puedes agregar una nueva capa a tu gráfico de dispersión existente con los mismos datos y propiedades de diseño, pero con un tamaño de marcador más pequeño y un atributo de información diferente al pasar el cursor. Esta nueva capa se utilizará para detectar los clics en los puntos, mientras que el gráfico de dispersión original permanecerá sin cambios. Luego, puedes adjuntar una función de retorno de llamada a la nueva capa utilizando el método
plotly.graph_objects.FigureWidget.on_click
. Esta función de retorno de llamada puede actualizar la tabla correspondientemente cuando se hace clic en un punto.Aquí tienes un ejemplo de código basado en el código de ejemplo de Plotly vinculado en la pregunta:
En este código, primero creamos un gráfico de dispersión con eventos de selección utilizando los datos de muestra. Luego, agregamos una nueva capa a la figura solo con puntos y sin información al pasar el cursor, y adjuntamos una nueva función de retorno de llamada
update_table
a esta capa utilizando el métodoon_click
. Esta función es similar a la funciónon_selection
utilizada para los eventos de selección, pero utiliza el atributopoint_inds
del argumentopoints
para obtener el índice del punto clicado en lugar de los índices de selección. Finalmente, mostramos tanto la figura como la tabla utilizando el métodoplotly.offline.iplot
.Con este código, deberías poder activar un evento de “Punto Select” haciendo clic en un punto en el gráfico de dispersión, lo cual actualizará la tabla con los datos correspondientes.