Lag when adding small scatters to large heatmap animations
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 18.8k
- Forks
- 2.8k
- Merge medio
- 16 h 26 min
- PR fusionados (30 d)
- 21
Descripción
I've noticed that adding a very small scatter to a large animation will make the lag when moving between frames very bag when working on a project requiring visualization of bboxes of segmentation outputs. If I don't have the bboxes then then there is no lag after startup. With bboxes it becomes very noticeable that the rerender is happening, and as the size of the heatmap increases it becomes worse. Is there a way to make it more smooth?
ADD_BBOXES=True
import numpy as np
import plotly.graph_objects
mock_segmentation_1 = plotly.graph_objects.Heatmap(
z=np.random.randint(0, 100, (2000,512)),
)
mock_segmentation_2 = plotly.graph_objects.Heatmap(
z=np.random.randint(0, 2, (2000,512)),
)
mock_bbox_1 = plotly.graph_objects.Scatter(
x=[100,100,400,400],
y=[200,500,500,200],
fillcolor="rgba(255,255,255)",
fill="toself",
hoveron="fills",
hoverinfo="text",
text='bbox1',
mode="lines",
showlegend=False,
)
mock_bbox_2 = plotly.graph_objects.Scatter(
x=[100,100,2000,2000],
y=[2000,500,500,2000],
fillcolor="rgba(255,255,255)",
fill="toself",
hoveron="fills",
hoverinfo="text",
text='bbox1',
mode="lines",
showlegend=False,
)
data1 = [mock_segmentation_1]
data2 = [mock_segmentation_2]
if ADD_BBOXES:
data1 = [mock_segmentation_1, mock_bbox_1]
data2 = [mock_segmentation_2, mock_bbox_2]
frames = [{'data': data1, 'name': '1'}, {'data': data2, 'name': '2'}]
figure_dict = {
"data": frames[0]["data"],
"frames": frames,
"layout": {
"sliders": [
{
"steps": [
{
"method": "animate",
"label": f"Frame {fname}",
"args": [
[fname],
{
"mode": "immediate",
"frame": {"redraw": True},
"transition": {'duration': 0},
},
],
}
for fname in ['1', '2']
]
}
],
},
}
plotly.graph_objects.Figure(figure_dict)
https://github.com/user-attachments/assets/5a7af1d5-6afc-40ce-b45d-f965507c79bd
https://github.com/user-attachments/assets/16fd1a62-64bd-4d6d-882e-3d46189bc224
I tried to fix this by turning off the visibility of the scatter frames, adding this to the layout. However, the lag persists as long as the bboxes exist, even if they are not visible.
"updatemenus": [
{
'buttons': [
{
'args': [{'visible': [True, True]}],
'label': 'Enable BBoxes',
'method': 'update'
}, {
'args': [{'visible': [True, False]}],
'label': 'Disable BBoxes',
'method': 'update'
}
]
}
]
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza ejecutando el ejemplo proporcionado de plotly.graph_objects.Figure y compara la animación con ADD_BBOXES habilitado, deshabilitado y oculto mediante los controles de updatemenus. Rastrea el comportamiento de actualización de frames de Heatmap y Scatter para identificar por qué una bbox inactiva sigue afectando al tiempo de redraw; se considera terminado cuando los frames grandes de Heatmap cambian suavemente con las trazas bbox presentes.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- numpy, plotly, python
- Área
- data-visualization, performance
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 45/100