@@ -1940,22 +1940,34 @@ exports.relayout = relayout;
19401940// Optimization mostly for large splom traces where
19411941// Plots.supplyDefaults can take > 100ms
19421942function axRangeSupplyDefaultsByPass ( gd , flags , specs ) {
1943- var k ;
1943+ var fullLayout = gd . _fullLayout ;
19441944
19451945 if ( ! flags . axrange ) return false ;
19461946
1947- for ( k in flags ) {
1947+ for ( var k in flags ) {
19481948 if ( k !== 'axrange' && flags [ k ] ) return false ;
19491949 }
19501950
1951- for ( k in specs . rangesAltered ) {
1952- var axName = Axes . id2name ( k ) ;
1951+ for ( var axId in specs . rangesAltered ) {
1952+ var axName = Axes . id2name ( axId ) ;
19531953 var axIn = gd . layout [ axName ] ;
1954- var axOut = gd . _fullLayout [ axName ] ;
1954+ var axOut = fullLayout [ axName ] ;
19551955 axOut . autorange = axIn . autorange ;
19561956 axOut . range = axIn . range . slice ( ) ;
19571957 axOut . cleanRange ( ) ;
1958+
1959+ if ( axOut . _matchGroup ) {
1960+ for ( var axId2 in axOut . _matchGroup ) {
1961+ if ( axId2 !== axId ) {
1962+ var ax2 = fullLayout [ Axes . id2name ( axId2 ) ] ;
1963+ ax2 . autorange = axOut . autorange ;
1964+ ax2 . range = axOut . range . slice ( ) ;
1965+ ax2 . _input . range = axOut . range . slice ( ) ;
1966+ }
1967+ }
1968+ }
19581969 }
1970+
19591971 return true ;
19601972}
19611973
@@ -1965,14 +1977,25 @@ function addAxRangeSequence(seq, rangesAltered) {
19651977 // executed after drawData
19661978 var drawAxes = rangesAltered ?
19671979 function ( gd ) {
1968- var opts = { skipTitle : true } ;
1980+ var axIds = [ ] ;
1981+ var skipTitle = true ;
1982+
19691983 for ( var id in rangesAltered ) {
1970- if ( Axes . getFromId ( gd , id ) . automargin ) {
1971- opts = { } ;
1972- break ;
1984+ var ax = Axes . getFromId ( gd , id ) ;
1985+ axIds . push ( id ) ;
1986+
1987+ if ( ax . _matchGroup ) {
1988+ for ( var id2 in ax . _matchGroup ) {
1989+ if ( ! rangesAltered [ id2 ] ) {
1990+ axIds . push ( id2 ) ;
1991+ }
1992+ }
19731993 }
1994+
1995+ if ( ax . automargin ) skipTitle = false ;
19741996 }
1975- return Axes . draw ( gd , Object . keys ( rangesAltered ) , opts ) ;
1997+
1998+ return Axes . draw ( gd , axIds , { skipTitle : skipTitle } ) ;
19761999 } :
19772000 function ( gd ) {
19782001 return Axes . draw ( gd , 'redraw' ) ;
0 commit comments