Splom open items
Personne n'a encore pris cette issue.
- Langage dominant
- JavaScript
- Étoiles
- 18.3k
- Forks
- 2k
- Merge moyen
- 2 j 12 h
- PR mergées (30 j)
- 28
Description
Follow-up from https://github.com/plotly/plotly.js/issues/2372, https://github.com/plotly/plotly.js/pull/2505 and https://github.com/plotly/plotly.js/pull/2527
Things that were left out
- Splom traces placed on overlaid axes are broken, see https://github.com/plotly/plotly.js/pull/2505#discussion_r181237788
- Multi-selection across subplot is disallowed. To do so, we would need to share
selectedpointsinfo across multiple splom-generated subplots, see https://github.com/plotly/plotly.js/pull/2505#issuecomment-380855752 - Relayout'ing grid style on
hasOnlyLargeSploms: truewithscattergltrace(s) fails to redraw scattergl trace(s), see https://github.com/plotly/plotly.js/issues/2562 FIXED in https://github.com/plotly/plotly.js/pull/3067
Things we could do, but would require some thought
- Add sub-trace on the diagonal (e.g. with
diagonal.mode: 'scattergl' || 'histogram' || 'box' || 'violin', see https://github.com/plotly/plotly.js/pull/2505#discussion_r177823962 - Add attribute in
dimensionsthat could default the splom generated axes' style (e.g.dimensions[i].showgrid: falsewould remove grid lines from all axes corresponding todimensions[i]). Edit: PR https://github.com/plotly/plotly.js/pull/2899 addeddimensions[i].axis.type, it would be easy to add more attribute under that container. - Make one single cartesian
<g .draglayer>covering the whole plot area instead of multiple (12 I think) per subplot. This would speed up initial rendering (especially for splom, but also for all graphs with many subplots), make cross-subplot selections a little easier to manage, see https://github.com/plotly/plotly.js/pull/2505#discussion_r181237581 - optimize
regl-line2dfor grid data - implement matching axes https://github.com/plotly/plotly.js/issues/1549
- Remove remaining O(n^2) SVG items. In addition to
g.draglayermentioned above, there are two categories I can see:- Subplot backgrounds
rect.bg- These could be omitted entirely whenplot_bgcolormatchespaper_bgcolor(and both are fully opaque - which is true by default), otherwise perhaps we could move them into the WebGL canvas though @etpinard points out this may impact pan/zoom performance. UPDATE: optimized when plot and paper bgcolor match in https://github.com/plotly/plotly.js/pull/3057, possible future improvements in https://github.com/plotly/plotly.js/pull/3057#discussion_r222030211 - Subplot groups
.subplot.x<N>y<M>- normally only the ones with tick labels and titles have any visible content in them, but currently they all have some empty groups, an associatedclipPath#clip<UID>x<N>y<M>plot, and a few<path d="M0,0">elements, we should be able to avoid even creating the unused ones.
- Subplot backgrounds
Related issues that would benefit splom performance:
- faster axis autorange relayout: https://github.com/plotly/plotly.js/issues/2546
- per-axis 'axrange' relayout: https://github.com/plotly/plotly.js/issues/2547
- stash pts selections for pan: https://github.com/plotly/plotly.js/issues/2548
- speed up cartesian axis defaults: https://github.com/plotly/plotly.js/issues/2549
- replacing getBoundingClientRect calls in
Axes.doTickshttps://github.com/plotly/plotly.js/issues/1988 - done in: https://github.com/plotly/plotly.js/pull/4165
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par lire l’issue #2372 et les PRs #2505 et #2527, puis séparez les éléments de la checklist qui ne sont pas cochés de ceux qui ont déjà été corrigés par des PRs ultérieures. Aucun fichier source ni aucun test n’est indiqué ; la personne contributrice devrait se mettre d’accord sur un élément restant, en identifier le point d’entrée et les tests, puis définir les critères d’achèvement avant de commencer.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- javascript
- Domaine
- data-visualization, performance
- Type d'issue
- Fonctionnalité
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 15/100