diff --git a/devtools/test_dashboard/test_gl3d.js b/devtools/test_dashboard/test_gl3d.js index 76ed41e6379..f6e92ca314a 100644 --- a/devtools/test_dashboard/test_gl3d.js +++ b/devtools/test_dashboard/test_gl3d.js @@ -26,7 +26,7 @@ plots['triangle-mesh3d'] = require('@mocks/gl3d_triangle.json'); plots['snowden'] = require('@mocks/gl3d_snowden.json'); plots['bunny'] = require('@mocks/gl3d_bunny.json'); plots['ribbons'] = require('@mocks/gl3d_ribbons.json'); -plots['date-time'] = require('@mocks/gl3d_scatter-date.json'); +plots['scatter-time'] = require('@mocks/gl3d_scatter-date.json'); plots['cufflinks'] = require('@mocks/gl3d_cufflinks.json'); plots['chrisp-nan-1'] = require('@mocks/gl3d_chrisp-nan-1.json'); plots['marker-arrays'] = require('@mocks/gl3d_marker-arrays.json'); diff --git a/src/traces/scatter3d/attributes.js b/src/traces/scatter3d/attributes.js index 4d392baa2e4..4c3a155196d 100644 --- a/src/traces/scatter3d/attributes.js +++ b/src/traces/scatter3d/attributes.js @@ -114,7 +114,17 @@ module.exports = { sizeref: scatterMarkerAttrs.sizeref, sizemin: scatterMarkerAttrs.sizemin, sizemode: scatterMarkerAttrs.sizemode, - opacity: scatterMarkerAttrs.opacity, + opacity: extendFlat({}, scatterMarkerAttrs.opacity, { + arrayOk: false, + description: [ + 'Sets the marker opacity.', + 'Note that the marker opacity for scatter3d traces', + 'must be a scalar value for performance reasons.', + 'To set a blending opacity value', + '(i.e. which is not transparent), set *marker.color*', + 'to an rgba color and use its alpha channel.' + ].join(' ') + }), colorscale: scatterMarkerAttrs.colorscale, cauto: scatterMarkerAttrs.cauto, cmax: scatterMarkerAttrs.cmax, diff --git a/src/traces/scatter3d/convert.js b/src/traces/scatter3d/convert.js index 6bd61f5d8ad..c6fd15f59e7 100644 --- a/src/traces/scatter3d/convert.js +++ b/src/traces/scatter3d/convert.js @@ -319,10 +319,9 @@ proto.update = function(data) { this.linePlot = null; } + // N.B. marker.opacity must be a scalar for performance var scatterOpacity = data.opacity; - if(data.marker && typeof data.marker.opacity === 'number') { - scatterOpacity *= data.marker.opacity; - } + if(data.marker && data.marker.opacity) scatterOpacity *= data.marker.opacity; scatterOptions = { gl: gl,