@@ -27,9 +27,23 @@ var c = require('./constants');
27
27
var brush = require ( './axisbrush' ) ;
28
28
var lineLayerMaker = require ( './lines' ) ;
29
29
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
+
30
41
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 ] ;
33
47
34
48
if ( isNaN ( lo ) || ! isFinite ( lo ) ) {
35
49
lo = 0 ;
@@ -152,11 +166,13 @@ function model(layout, d, i) {
152
166
var rangeFont = trace . rangefont ;
153
167
154
168
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
+ ) ) ,
160
176
blockLineCount : c . blockLineCount ,
161
177
canvasOverdrag : c . overdrag * c . canvasPixelRatio
162
178
} ) ;
@@ -381,28 +397,15 @@ function calcAllTicks(cd) {
381
397
for ( var i = 0 ; i < cd . length ; i ++ ) {
382
398
for ( var j = 0 ; j < cd [ i ] . length ; j ++ ) {
383
399
var trace = cd [ i ] [ j ] . trace ;
384
- var len = trace . _length ;
385
400
var dimensions = trace . dimensions ;
386
401
387
402
for ( var k = 0 ; k < dimensions . length ; k ++ ) {
388
403
var values = dimensions [ k ] . values ;
389
404
var dim = dimensions [ k ] . _ax ;
390
405
391
406
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 ) ;
406
409
407
410
dim . tickformat = dimensions [ k ] . tickformat ;
408
411
Axes . calcTicks ( dim ) ;
0 commit comments