Skip to content

Commit ed0f7e0

Browse files
committed
use default color if lines or lines.colorscale is missing
(cherry picked from commit 592740b)
1 parent b95ee8a commit ed0f7e0

File tree

4 files changed

+227
-186
lines changed

4 files changed

+227
-186
lines changed

src/traces/parcoords/calc.js

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ var calcColorscale = require('../../components/colorscale/calc');
1313
var isNumeric = require('fast-isnumeric');
1414
var d3 = require('d3');
1515

16-
// todo consider unifying common parts with e.g. `scatter`
1716
function colorScale(trace) {
1817
if(hasColorscale(trace, 'line')) {
1918
calcColorscale(trace, trace.line.color, 'line', 'c');
@@ -44,11 +43,20 @@ module.exports = function calc(gd, trace) {
4443
});
4544
}
4645

47-
// todo should it be in defaults.js?
4846
colorScale(trace, trace.line.color, 'line', 'c');
4947

50-
var colorStops = trace.line.colorscale.map(function(d) {return d[0];});
51-
var colorStrings = trace.line.colorscale.map(function(d) {return d[1];});
48+
var cs = !!trace.line.colorscale;
49+
50+
var cscale = cs ? trace.line.colorscale : [[0, trace.line.color], [1, trace.line.color]];
51+
var cmin = trace.line.cmin === void(0) ? 0 : trace.line.cmin;
52+
var cmax = trace.line.cmax === void(0) ? 1 : trace.line.cmax;
53+
var color = cs ? trace.line.color : Array.apply(0, Array(trace.dimensions.reduce(function(p, n) {return Math.max(p, n.values.length);}, 0))).map(function() {return 0.5;});
54+
55+
trace.line.color = color;
56+
trace.line.colorscale = cscale;
57+
58+
var colorStops = cscale.map(function(d) {return d[0];});
59+
var colorStrings = cscale.map(function(d) {return d[1];});
5260
var colorTuples = colorStrings.map(function(c) {return d3.rgb(c);});
5361
var prop = function(n) {return function(o) {return o[n];};};
5462

@@ -62,10 +70,10 @@ module.exports = function calc(gd, trace) {
6270
});
6371

6472
var colorToUnitScale = d3.scale.linear()
65-
.domain(d3.extent(trace.line.color));
73+
.domain(d3.extent(color));
6674

67-
var unitMin = colorToUnitScale(trace.line.cmin);
68-
var unitMax = colorToUnitScale(trace.line.cmax);
75+
var unitMin = colorToUnitScale(cmin);
76+
var unitMax = colorToUnitScale(cmax);
6977

7078
var cScale = d3.scale.linear()
7179
.clamp(true)

src/traces/parcoords/defaults.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
8787
coerce('domain.x');
8888
coerce('domain.y');
8989

90-
coerce('line.color');
90+
coerce('line.color', defaultColor);
9191
coerce('line.focusopacity');
9292
coerce('line.contextopacity');
9393
coerce('line.pixelratio');

src/traces/parcoords/lines.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ module.exports = function(canvasGL, lines, canvasWidth, canvasHeight, dimensions
156156
};
157157

158158
var dimensionCount = dimensions.length;
159-
var sampleCount = dimensions[0].values.length;
159+
var sampleCount = dimensions.reduce(function(p, n) {return Math.min(p, n.values.length);}, dimensions[0].values.length);
160160

161161
var focusAlphaBlending = context || lines.focusalphablending;
162162

0 commit comments

Comments
 (0)