plotly / plotly/react-plotly.js

Updating single trace of many: changing `revision` prop does not improve performance (compared to redrawing all)

Ouverte
#243 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
JavaScript
Étoiles
1.1k
Forks
138
Merge moyen
3 j 2 h
PR mergées (30 j)
4

Description

Hi, I am trying to redraw only single trace in a plot of many traces (biophysical data). I tried to follow instructions in react-plotly and plotlyjs documentation. Plot is updated but I don't see any performance improvement if I change only single element of data or all data elements, if I change revision as described in following:
https://github.com/plotly/react-plotly.js/#refreshing-the-plot
https://plotly.com/javascript/plotlyjs-function-reference/#plotlyreact
Important Note: In order to use this method to plot new items in arrays under data such as x or marker.color etc, these items must either have been added immutably (i.e. the identity of the parent array must have changed) or the value of layout.datarevision must have changed.

I generate sample data 100 traces of 10000 points with:

  const data = useRef([...Array(100).keys()].map( c=> (
    { x: [...Array(10000).keys()],
      y: [...Array(10000).keys()].map( c=> c/10000.0 + Math.random()/5)
    } ) ))
  const revision = useRef(0)

Also, I change data with:

revision.current++
data.current[0].x = [...Array(100).keys()].map( v => v*100)
data.current[0].y = [...Array(100).keys()].map( c=> Math.random())
setState({...state, data:data.current, revision:revision.current})

Plot is generated using data.current for it's data prop

<Plot
data={state.data}
revision={state.revision}
...

Drawing plot containing single trace takes just a split of second, but if I had already drawn many traces and I want to redraw only single trace, it takes same time as to redraw all traces (few seconds).
Am I doing something wrong?

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par reproduire le cas signalé avec le 100-trace sample et comparez la modification d’une seule trace avec la modification de toutes les traces. Examinez le chemin de mise à jour de data et de revision du composant Plot ainsi que la documentation référencée de react-plotly.js et de Plotly.js ; la tâche est considérée comme terminée lorsqu’il est établi si le redessin d’une seule trace est pris en charge et que le comportement observé est documenté ou corrigé.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
javascript, react
Domaine
data-visualization, frontend, performance
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
25/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.