Splom open items
オープン
まだ誰も着手していません。
feature
P3
- 主要言語
- JavaScript
- スター
- 18.3k
- フォーク
- 2k
- 平均マージ
- 2日 12時間
- マージ済み PR(30日)
- 28
説明
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
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
まず issue #2372 と PR #2505 および #2527 を読み、その後、未チェックのチェックリスト項目と、後続の PR ですでに修正された項目を分けます。ソースファイルもテストも指定されていないため、コントリビューターは残っている項目の 1 つについて合意し、そのエントリポイントとテストを特定してから、着手前に完了条件を定義する必要があります。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- javascript
- 領域
- data-visualization, performance
- issue の種類
- 機能追加
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 活発さ
- 停滞
- 明瞭さ
- 説明が足りない
- 初心者へのやさしさ
- 15/100