Skip to content

Commit 1d4d06f

Browse files
committed
fix and 🔒 coloraxis for gl3d traces
1 parent 49103b4 commit 1d4d06f

File tree

11 files changed

+1306
-33
lines changed

11 files changed

+1306
-33
lines changed

src/lib/gl_format_color.js

+5-4
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
* LICENSE file in the root directory of this source tree.
77
*/
88

9-
109
'use strict';
1110

1211
var isNumeric = require('fast-isnumeric');
@@ -79,9 +78,11 @@ function formatColor(containerIn, opacityIn, len) {
7978
function parseColorScale(cont, alpha) {
8079
if(alpha === undefined) alpha = 1;
8180

82-
var colorscale = cont.reversescale ?
83-
Colorscale.flipScale(cont.colorscale) :
84-
cont.colorscale;
81+
var cOpts = Colorscale.extractOpts(cont);
82+
83+
var colorscale = cOpts.reversescale ?
84+
Colorscale.flipScale(cOpts.colorscale) :
85+
cOpts.colorscale;
8586

8687
return colorscale.map(function(elem) {
8788
var index = elem[0];

src/traces/cone/convert.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ var createConeMesh = require('gl-cone3d').createConeMesh;
1313

1414
var simpleMap = require('../../lib').simpleMap;
1515
var parseColorScale = require('../../lib/gl_format_color').parseColorScale;
16+
var extractOpts = require('../../components/colorscale').extractOpts;
1617
var zip3 = require('../../plots/gl3d/zip3');
1718

1819
function Cone(scene, uid) {
@@ -80,8 +81,9 @@ function convert(scene, trace) {
8081
trace._len
8182
);
8283

84+
var cOpts = extractOpts(trace);
8385
coneOpts.colormap = parseColorScale(trace);
84-
coneOpts.vertexIntensityBounds = [trace.cmin / trace._normMax, trace.cmax / trace._normMax];
86+
coneOpts.vertexIntensityBounds = [cOpts.min / trace._normMax, cOpts.max / trace._normMax];
8587
coneOpts.coneOffset = anchor2coneOffset[trace.anchor];
8688

8789
if(trace.sizemode === 'scaled') {

src/traces/isosurface/convert.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,16 @@
66
* LICENSE file in the root directory of this source tree.
77
*/
88

9-
109
'use strict';
1110

1211
var createMesh = require('gl-mesh3d');
1312

13+
var Lib = require('../../lib');
14+
1415
var parseColorScale = require('../../lib/gl_format_color').parseColorScale;
1516
var str2RgbaArray = require('../../lib/str2rgbarray');
17+
var extractOpts = require('../../components/colorscale').extractOpts;
1618
var zip3 = require('../../plots/gl3d/zip3');
17-
var Lib = require('../../lib');
1819

1920
function distinctVals(col) {
2021
return Lib.distinctVals(col).vals;
@@ -121,8 +122,9 @@ proto.update = function(data) {
121122
useFacetNormals: data.flatshading
122123
};
123124

125+
var cOpts = extractOpts(data);
124126
config.vertexIntensity = data._intensity;
125-
config.vertexIntensityBounds = [data.cmin, data.cmax];
127+
config.vertexIntensityBounds = [cOpts.min, cOpts.max];
126128
config.colormap = parseColorScale(data);
127129

128130
// Update mesh

src/traces/mesh3d/convert.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
* LICENSE file in the root directory of this source tree.
77
*/
88

9-
109
'use strict';
1110

1211
var createMesh = require('gl-mesh3d');
@@ -16,6 +15,7 @@ var convexHull = require('convex-hull');
1615

1716
var parseColorScale = require('../../lib/gl_format_color').parseColorScale;
1817
var str2RgbaArray = require('../../lib/str2rgbarray');
18+
var extractOpts = require('../../components/colorscale').extractOpts;
1919
var zip3 = require('../../plots/gl3d/zip3');
2020

2121
function Mesh3DTrace(scene, mesh, uid) {
@@ -158,9 +158,10 @@ proto.update = function(data) {
158158
};
159159

160160
if(data.intensity) {
161+
var cOpts = extractOpts(data);
161162
this.color = '#fff';
162163
config.vertexIntensity = data.intensity;
163-
config.vertexIntensityBounds = [data.cmin, data.cmax];
164+
config.vertexIntensityBounds = [cOpts.min, cOpts.max];
164165
config.colormap = parseColorScale(data);
165166
} else if(data.vertexcolor) {
166167
this.color = data.vertexcolor[0];

src/traces/streamtube/convert.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ var createTubeMesh = tube2mesh.createTubeMesh;
1313

1414
var Lib = require('../../lib');
1515
var parseColorScale = require('../../lib/gl_format_color').parseColorScale;
16+
var extractOpts = require('../../components/colorscale').extractOpts;
1617
var zip3 = require('../../plots/gl3d/zip3');
1718

1819
var axisName2scaleIndex = {xaxis: 0, yaxis: 1, zaxis: 2};
@@ -177,7 +178,8 @@ function convert(scene, trace) {
177178
// N.B. cmin/cmax correspond to the min/max vector norm
178179
// in the u/v/w arrays, which in general is NOT equal to max
179180
// intensity that colors the tubes.
180-
meshData.vertexIntensityBounds = [trace.cmin / trace._normMax, trace.cmax / trace._normMax];
181+
var cOpts = extractOpts(trace);
182+
meshData.vertexIntensityBounds = [cOpts.min / trace._normMax, cOpts.max / trace._normMax];
181183

182184
// pass gl-mesh3d lighting attributes
183185
var lp = trace.lightposition;

src/traces/surface/convert.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ var fill = require('ndarray-fill');
1818
var isArrayOrTypedArray = require('../../lib').isArrayOrTypedArray;
1919
var parseColorScale = require('../../lib/gl_format_color').parseColorScale;
2020
var str2RgbaArray = require('../../lib/str2rgbarray');
21+
var extractOpts = require('../../components/colorscale').extractOpts;
2122

2223
var interp2d = require('../heatmap/interp2d');
2324
var findEmpties = require('../heatmap/find_empties');
@@ -534,7 +535,8 @@ proto.update = function(data) {
534535
opacity: data.opacity
535536
};
536537

537-
params.intensityBounds = [data.cmin, data.cmax];
538+
var cOpts = extractOpts(data);
539+
params.intensityBounds = [cOpts.min, cOpts.max];
538540

539541
// Refine surface color if necessary
540542
if(data.surfacecolor) {

src/traces/volume/convert.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66
* LICENSE file in the root directory of this source tree.
77
*/
88

9-
109
'use strict';
1110

1211
var createMesh = require('gl-mesh3d');
1312

1413
var parseColorScale = require('../../lib/gl_format_color').parseColorScale;
1514
var str2RgbaArray = require('../../lib/str2rgbarray');
15+
var extractOpts = require('../../components/colorscale').extractOpts;
1616
var zip3 = require('../../plots/gl3d/zip3');
1717

1818
var findNearestOnAxis = require('../isosurface/convert').findNearestOnAxis;
@@ -103,8 +103,9 @@ proto.update = function(data) {
103103
useFacetNormals: data.flatshading
104104
};
105105

106+
var cOpts = extractOpts(data);
106107
config.vertexIntensity = data._intensity;
107-
config.vertexIntensityBounds = [data.cmin, data.cmax];
108+
config.vertexIntensityBounds = [cOpts.min, cOpts.max];
108109
config.colormap = parseColorScale(data);
109110

110111
// Update mesh
78.1 KB
Loading

test/image/baselines/gl3d_ribbons.png

-5.1 KB
Loading

0 commit comments

Comments
 (0)