Open
Description
Follow-up from #2372, #2505 and #2527
Things that were left out
- Splom traces placed on overlaid axes are broken, see Introducing splom traces #2505 (comment)
- 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) - Relayout'ing grid style on
hasOnlyLargeSploms: true
withscattergl
trace(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 #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 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 todimensions[i]
). Edit: PR Multi-axis-type sploms #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 Introducing splom traces #2505 (comment) - optimize
regl-line2d
for grid data - implement matching axes Matching axes #1549
- 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 whenplot_bgcolor
matchespaper_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 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:Faster axis autorange relayout #2546 -
per-axis 'axrange' relayout: Per axisaxrange
edit type #2547 -
stash pts selections for pan: Stash SVG points selections for faster pan #2548 - speed up cartesian axis defaults: Speed up cartesian axes supplyDefaults #2549
- replacing getBoundingClientRect calls in
Axes.doTicks
Replace getBoundingClientRect calls in axes.js #1988 - done in: Axes.draw w/o getBoundingClientRect + many axis automargin fixes #4165