@@ -25,13 +25,15 @@ module.exports = function calc(gd, trace) {
25
25
var xa = Axes . getFromId ( gd , trace . xaxis || 'x' ) ,
26
26
ya = Axes . getFromId ( gd , trace . yaxis || 'y' ) ,
27
27
orientation = trace . orientation || ( ( trace . x && ! trace . y ) ? 'h' : 'v' ) ,
28
- pos , size , i ;
28
+ sa , pos , size , i ;
29
29
30
30
if ( orientation === 'h' ) {
31
+ sa = xa ;
31
32
size = xa . makeCalcdata ( trace , 'x' ) ;
32
33
pos = ya . makeCalcdata ( trace , 'y' ) ;
33
34
}
34
35
else {
36
+ sa = ya ;
35
37
size = ya . makeCalcdata ( trace , 'y' ) ;
36
38
pos = xa . makeCalcdata ( trace , 'x' ) ;
37
39
}
@@ -40,14 +42,43 @@ module.exports = function calc(gd, trace) {
40
42
var serieslen = Math . min ( pos . length , size . length ) ,
41
43
cd = [ ] ;
42
44
45
+ // set position
43
46
for ( i = 0 ; i < serieslen ; i ++ ) {
44
47
45
48
// add bars with non-numeric sizes to calcdata
46
49
// so that ensure that traces with gaps are
47
50
// plotted in the correct order
48
51
49
52
if ( isNumeric ( pos [ i ] ) ) {
50
- cd . push ( { p : pos [ i ] , s : size [ i ] , b : 0 } ) ;
53
+ cd . push ( { p : pos [ i ] } ) ;
54
+ }
55
+ }
56
+
57
+ // set base
58
+ var base = trace . base ,
59
+ b ;
60
+
61
+ if ( Array . isArray ( base ) ) {
62
+ for ( i = 0 ; i < Math . min ( base . length , cd . length ) ; i ++ ) {
63
+ b = sa . d2c ( base [ i ] ) ;
64
+ cd [ i ] . b = ( isNumeric ( b ) ) ? b : 0 ;
65
+ }
66
+ for ( ; i < cd . length ; i ++ ) {
67
+ cd [ i ] . b = 0 ;
68
+ }
69
+ }
70
+ else {
71
+ b = sa . d2c ( base ) ;
72
+ b = ( isNumeric ( b ) ) ? b : 0 ;
73
+ for ( i = 0 ; i < cd . length ; i ++ ) {
74
+ cd [ i ] . b = b ;
75
+ }
76
+ }
77
+
78
+ // set size
79
+ for ( i = 0 ; i < cd . length ; i ++ ) {
80
+ if ( isNumeric ( size [ i ] ) ) {
81
+ cd [ i ] . s = size [ i ] ;
51
82
}
52
83
}
53
84
0 commit comments