@@ -39,8 +39,9 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
3939 var yaMayHide = { } ;
4040 var xaMustDisplay = { } ;
4141 var yaMustDisplay = { } ;
42- var yaMustForward = { } ;
43- var yaMayBackward = { } ;
42+ var yaMustNotReverse = { } ;
43+ var yaMayReverse = { } ;
44+ var axHasImage = { } ;
4445 var outerTicks = { } ;
4546 var noGrids = { } ;
4647 var i , j ;
@@ -74,24 +75,22 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
7475 if ( trace . type === 'funnel' ) {
7576 if ( trace . orientation === 'h' ) {
7677 if ( xaName ) xaMayHide [ xaName ] = true ;
77- if ( yaName ) yaMayBackward [ yaName ] = true ;
78+ if ( yaName ) yaMayReverse [ yaName ] = true ;
7879 } else {
7980 if ( yaName ) yaMayHide [ yaName ] = true ;
8081 }
82+ } else if ( trace . type === 'image' ) {
83+ if ( yaName ) axHasImage [ yaName ] = true ;
84+ if ( xaName ) axHasImage [ xaName ] = true ;
8185 } else {
8286 if ( yaName ) {
8387 yaMustDisplay [ yaName ] = true ;
84- yaMustForward [ yaName ] = true ;
88+ yaMustNotReverse [ yaName ] = true ;
8589 }
8690
8791 if ( ! traceIs ( trace , 'carpet' ) || ( trace . type === 'carpet' && ! trace . _cheater ) ) {
8892 if ( xaName ) xaMustDisplay [ xaName ] = true ;
8993 }
90-
91- if ( trace . type === 'image' ) {
92- if ( yaName ) yaMustForward [ yaName ] = false ;
93- if ( yaName ) yaMayBackward [ yaName ] = true ;
94- }
9594 }
9695
9796 // Two things trigger axis visibility:
@@ -197,7 +196,11 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
197196 ( axLetter === 'y' && ! yaMustDisplay [ axName ] && yaMayHide [ axName ] ) ;
198197
199198 var reverseDflt =
200- ( axLetter === 'y' && ! yaMustForward [ axName ] && yaMayBackward [ axName ] ) ;
199+ ( axLetter === 'y' &&
200+ (
201+ ( ! yaMustNotReverse [ axName ] && yaMayReverse [ axName ] ) ||
202+ axHasImage [ axName ]
203+ ) ) ;
201204
202205 var defaultOptions = {
203206 letter : axLetter ,
@@ -299,7 +302,22 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
299302 axLayoutIn = layoutIn [ axName ] ;
300303 axLayoutOut = layoutOut [ axName ] ;
301304
302- handleConstraintDefaults ( axLayoutIn , axLayoutOut , coerce , allAxisIds , layoutOut ) ;
305+ var scaleanchorDflt ;
306+ if ( axLetter === 'y' && ! axLayoutIn . hasOwnProperty ( 'scaleanchor' ) && axHasImage [ axName ] ) {
307+ scaleanchorDflt = axLayoutOut . anchor ;
308+ } else { scaleanchorDflt = undefined ; }
309+
310+ var constrainDflt ;
311+ if ( ! axLayoutIn . hasOwnProperty ( 'constrain' ) && axHasImage [ axName ] ) {
312+ constrainDflt = 'domain' ;
313+ } else { constrainDflt = undefined ; }
314+
315+ handleConstraintDefaults ( axLayoutIn , axLayoutOut , coerce , {
316+ allAxisIds : allAxisIds ,
317+ layoutOut : layoutOut ,
318+ scaleanchorDflt : scaleanchorDflt ,
319+ constrainDflt : constrainDflt
320+ } ) ;
303321 }
304322
305323 for ( i = 0 ; i < matchGroups . length ; i ++ ) {
0 commit comments