Plotly.js: gl2d known limitations

Created on 17 Dec 2015  路  13Comments  路  Source: plotly/plotly.js

A list of known limitations in gl2d graphs in comparison with svg2d feature set:

  • [x] image export isn't reliable (meaning gl2d graphs have no image test support)
  • [x] scatter mode: 'text' (for text charts) is not available
  • [x] _'free'_ axes and _'overlaying'_ axes are not available. But subplots, insets, shared axes work. Hurdles: free axes with custom 'position' would need an option to make a gap between the data-box and the axis in gl-plot2d, overlaying axes would need more logic around when to show grid lines, scene backgroud color and have hover events propagate down. :white_check_mark: Fixed with regl.
  • [x] data-reference annotations/shapes are not available (paper-reference annotations/shapes work)
  • [x] fill options tonexty, tonexty, and toself are not avaliable (tozerox and tozeroy work) :white_check_mark: Fixed with regl.
  • [x] the marker.symbol is pretty good since v1.28.0 but not on-par with svg :white_check_mark: Fixed with regl.
  • [ ] px-specified line.dash are not available
  • [x] no line.shape: 'spline' update: 'hv', 'vh', 'hvh', 'vhv' added in https://github.com/plotly/plotly.js/pull/3087
  • [x] axis titles are not centered (positioning algo does not consider text width)
  • [x] tick marks don't support \n (most common in date axes)
  • [x] axes don't support decreasing (custom or with autorange: 'reversed') ranges. :white_check_mark: Fixed with regl.
  • [x] hovermode x and y are not available (toggling hover on/off in modebar works). :white_check_mark: Fixed with regl.
  • [x] no support for axis fixedrange (would need to tweak gl-select-box). :white_check_mark: Fixed with regl.
  • [x] double click and shift click interactions are not supported. :white_check_mark: Fixed with regl.
  • [x] cartesian + gl2d subplot on the same graph are not supported. :white_check_mark: Fixed with regl.
  • [x] plotly_hover, plotly_unhover and plotly_click are not emitted [done in #994]
  • [x] setting hoverinfo to 'none' should disable the hover spikes. :white_check_mark: Fixed with regl.
  • [x] a hover spikes sometimes appears prematurely after initial Plotly.plot call
  • [x] select box and lasso selections are not supported
  • [x] single-axis zoom/pan and corner zoom interactions are not supported
  • [x] zoom-box doesn't follow cursor outside the plot bounds (i.e. no cover slip). :white_check_mark: Fixed with regl.

Most helpful comment

can you also include ADD d3 events to plotly_click plotly_hover plotly_unhover events? Same as non webgl version?

All 13 comments

can you also include ADD d3 events to plotly_click plotly_hover plotly_unhover events? Same as non webgl version?

Also, no support for tags as to Scattergl.
For example,
layout = go.Layout(xaxis=dict(title='<b>Title</b>'))
Title will not appear if enclosed in the tags.

can you also include ADD d3 events to plotly_click plotly_hover plotly_unhover events? Same as non webgl version?

Also, no support for tags as to Scattergl.
For example,
layout = go.Layout(xaxis=dict(title='Title'))
Title will not appear if enclosed in the tags.

Both will be fixed by @dfcreative 's regl-based scattergl.

@dfcreative quick question: is your implementation of line.dash on-par with SVG scatter?

... if so, the only remaining items in the list above are:

pretty good :tada:

@etpinard dashes are not perfectly the same px-wise, but cover all SVG modes.

A few more things that scattergl doesn't do quite right as of https://github.com/plotly/plotly.js/pull/2258:

Writing down a couple more thoughts on future gl2d development. Some of these items may benefit from Github issue of their own down the road.

  • In a private convo, @dfcreative wrote: _merge snap-points-2d/kdtree to point-cluster DONE during the splom push
  • make tree-based selection subrange)_ for improved performances
  • better auto-range solution for gl2d. The SVG solution doesn't scale well to 1e6, but it would be nice to make scatter and scattergl use the same set of rules e.g. we could say: _for graphs with more than 1e5 don't consider marker.size in auto-range computation._ DONE in https://github.com/plotly/plotly.js/pull/2404
  • Update pointcloud to using regl. Better yet, merge pointcloud fast data pass into a scattergl _mode_ to allows fast updates.
  • What to do with heatmapgl and contourgl? Canvas-based heatmap is currently out-performing heatmapgl in the latest Chrome version. contourgl is full of bugs and offers little to no benefits compare to svg contour. Perhaps we should just deprecate them.

@dfcreative 's new regl-based scattergl was merged in #2258 and released in v1.33.0. We'll leave this issue open as a starting point to discuss future gl2d development, but we'll close off the On-par gl2d.

Not sure if y'all group scattermapbox under this category, but I would to see that support hoveron='fill' as well!

Closing. Looks like all the remaining items have their own ticket.

If I missed something, please open a new ticket.

Was this page helpful?
0 / 5 - 0 ratings