Skip to content

Commit bee825e

Browse files
authored
Merge pull request #4013 from plotly/more-parcoords-range-fixes
parcoords - reusing Lib.aggNums in finding extreme ranges
2 parents b882de9 + eae444d commit bee825e

File tree

1 file changed

+25
-22
lines changed

1 file changed

+25
-22
lines changed

src/traces/parcoords/parcoords.js

+25-22
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,23 @@ var c = require('./constants');
2727
var brush = require('./axisbrush');
2828
var lineLayerMaker = require('./lines');
2929

30+
function findExtreme(fn, values, len) {
31+
return Lib.aggNums(fn, null, values, len);
32+
}
33+
34+
function findExtremes(values, len) {
35+
return [
36+
findExtreme(Math.min, values, len),
37+
findExtreme(Math.max, values, len)
38+
];
39+
}
40+
3041
function dimensionExtent(dimension) {
31-
var lo = dimension.range ? dimension.range[0] : Lib.aggNums(Math.min, null, dimension.values, dimension._length);
32-
var hi = dimension.range ? dimension.range[1] : Lib.aggNums(Math.max, null, dimension.values, dimension._length);
42+
var range = dimension.range;
43+
if(!range) range = findExtremes(dimension.values, dimension._length);
44+
45+
var lo = range[0];
46+
var hi = range[1];
3347

3448
if(isNaN(lo) || !isFinite(lo)) {
3549
lo = 0;
@@ -152,11 +166,13 @@ function model(layout, d, i) {
152166
var rangeFont = trace.rangefont;
153167

154168
var lines = Lib.extendDeepNoArrays({}, line, {
155-
color: lineColor.map(d3.scale.linear().domain(dimensionExtent({
156-
values: lineColor,
157-
range: [cOpts.min, cOpts.max],
158-
_length: trace._length
159-
}))),
169+
color: lineColor.map(d3.scale.linear().domain(
170+
dimensionExtent({
171+
values: lineColor,
172+
range: [cOpts.min, cOpts.max],
173+
_length: trace._length
174+
})
175+
)),
160176
blockLineCount: c.blockLineCount,
161177
canvasOverdrag: c.overdrag * c.canvasPixelRatio
162178
});
@@ -381,28 +397,15 @@ function calcAllTicks(cd) {
381397
for(var i = 0; i < cd.length; i++) {
382398
for(var j = 0; j < cd[i].length; j++) {
383399
var trace = cd[i][j].trace;
384-
var len = trace._length;
385400
var dimensions = trace.dimensions;
386401

387402
for(var k = 0; k < dimensions.length; k++) {
388403
var values = dimensions[k].values;
389404
var dim = dimensions[k]._ax;
390405

391406
if(dim) {
392-
if(!dim.range) {
393-
var max = -Infinity;
394-
var min = Infinity;
395-
for(var q = 0; q < len; q++) {
396-
var v = values[q];
397-
if(isFinite(v)) {
398-
if(max < v) max = v;
399-
if(min > v) min = v;
400-
}
401-
}
402-
dim.range = [min, max];
403-
}
404-
405-
if(!dim.dtick) dim.dtick = 0.01 * Math.abs(dim.range[1] - dim.range[0]);
407+
if(!dim.range) dim.range = findExtremes(values, trace._length);
408+
if(!dim.dtick) dim.dtick = 0.01 * (Math.abs(dim.range[1] - dim.range[0]) || 1);
406409

407410
dim.tickformat = dimensions[k].tickformat;
408411
Axes.calcTicks(dim);

0 commit comments

Comments
 (0)