You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Multi-selection across subplot is disallowed. To do so, we would need to share selectedpoints info across multiple splom-generated subplots, see Introducing splom traces #2505 (comment)
Add attribute in dimensions that could default the splom generated axes' style (e.g. dimensions[i].showgrid: false would remove grid lines from all axes corresponding to dimensions[i]). Edit: PR Multi-axis-type sploms #2899 added dimensions[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 Introducing splom traces #2505 (comment)
Remove remaining O(n^2) SVG items. In addition to g.draglayer mentioned above, there are two categories I can see:
Subplot backgrounds rect.bg - These could be omitted entirely when plot_bgcolor matches paper_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 Aggressive splom perf #3057, possible future improvements in Aggressive splom perf #3057 (comment)
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 associated clipPath#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.
Related issues that would benefit splom performance:
Follow-up from #2372, #2505 and #2527
Things that were left out
selectedpointsinfo across multiple splom-generated subplots, see Introducing splom traces #2505 (comment)hasOnlyLargeSploms: truewithscattergltrace(s) fails to redraw scattergl trace(s), see Implement better (more maintainable) way to redraw gl canvases on incremental updates #2562 FIXED in Add redrawReglTraces subroutine #3067Things we could do, but would require some thought
diagonal.mode: 'scattergl' || 'histogram' || 'box' || 'violin', see Introducing splom traces #2505 (comment)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 Multi-axis-type sploms #2899 addeddimensions[i].axis.type, it would be easy to add more attribute under that container.<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 Introducing splom traces #2505 (comment)regl-line2dfor grid datag.draglayermentioned above, there are two categories I can see: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 Aggressive splom perf #3057, possible future improvements in Aggressive splom perf #3057 (comment).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.Related issues that would benefit splom performance:
faster axis autorange relayout:Faster axis autorange relayout #2546per-axis 'axrange' relayout: Per axisaxrangeedit type #2547stash pts selections for pan: Stash SVG points selections for faster pan #2548Axes.doTicksReplace getBoundingClientRect calls in axes.js #1988 - done in: Axes.draw w/o getBoundingClientRect + many axis automargin fixes #4165