plotly / plotly/plotly.py

Box/Lasso selection giving wrong indices in point_inds for px.scatter

Abierto
#3,976 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

bug P3
Lenguaje dominante
Python
Estrellas
18.8k
Forks
2.8k
Merge medio
16 h 26 min
PR fusionados (30 d)
21

Descripción

Hi,
I am implementing lasso/box selection in a scatterplot. I am using a callback function that returns me the indices of data selected by the user. The code works fine and returns me the correct indices when I applied a continuous or no label to the points. However, when I color the points using a discrete label I get incorrect indices or empty array.

Sample code to run is given below.

import plotly.express as px
import plotly.graph_objects as go
from plotly.graph_objs import *
from IPython.display import display

df = px.data.iris()
selected = []
def filter_(trace, points, state):
    global selected
    print(points)
    selected = points.point_inds

layout = Layout(
    paper_bgcolor='rgba(0,0,0,0)',
    plot_bgcolor='rgba(0,0,0,0)',
    width=1000,
    height=600,

)

fig = px.scatter(
    df,
    x='sepal_length',
    y='sepal_width',
    color="species",

)

fig.layout=layout
fig.update_xaxes(visible=False)
fig.update_yaxes(visible=False)
fig = go.FigureWidget(fig.data, fig.layout)
fig.layout.dragmode = 'lasso'
fig.data[0].on_selection(filter_)

display(fig)
dh = display(display_id=True)

On making a lasso/box selection this is the output thrown. As you can see point_inds is empty.

Points(point_inds=[],
       xs=[],
       ys=[],
       trace_name='setosa',
       trace_index=0)

If you comment color="species" , the code works fine.

In the above code, I also applied on_selection on all objects of fig.data but still did not work.

for f in fig.data:
    f.on_selection(filter_)

Version info -

Python - '3.8.8'
Plotly - '5.11.0'

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Reproduce el ejemplo proporcionado de px.scatter y FigureWidget en un cuaderno de Jupyter usando Python 3.8.8 y Plotly 5.11.0, comparando la selección con y sin color="species". Rastrea los callbacks de selección en fig.data y verifica que point_inds contenga las filas seleccionadas para cada trace coloreado; se considera terminado cuando la selección con lazo y con cuadro devuelve los índices esperados en lugar de un array vacío o incorrecto.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
jupyter-notebook, python
Área
data-visualization
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
25/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.