@@ -33,6 +33,22 @@ function appendList(cont, k, item) {
33
33
else cont [ k ] = [ item ] ;
34
34
}
35
35
36
+ function addMatchesInLayout ( axNames , list , layoutIn ) {
37
+ for ( var j = 0 ; j < list . length ; j ++ ) {
38
+ for ( var i = 0 ; i < list . length ; i ++ ) {
39
+ if ( i === j ) continue ;
40
+ var e = list [ i ] ;
41
+ if ( e === layoutIn [ list [ j ] ] . matches + 'axis' && axNames . indexOf ( e ) === - 1 ) {
42
+ // add item e to the start of the array
43
+ axNames = [ e ] . concat ( axNames ) ;
44
+ break ;
45
+ }
46
+ }
47
+ }
48
+
49
+ return axNames ;
50
+ }
51
+
36
52
module . exports = function supplyLayoutDefaults ( layoutIn , layoutOut , fullData ) {
37
53
var ax2traces = { } ;
38
54
var xaMayHide = { } ;
@@ -122,6 +138,14 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
122
138
var yIds = subplots . yaxis ;
123
139
var xNames = Lib . simpleMap ( xIds , id2name ) ;
124
140
var yNames = Lib . simpleMap ( yIds , id2name ) ;
141
+
142
+ // add axes that are referenced in the layout by other axes
143
+ var allKeys = Object . getOwnPropertyNames ( layoutIn ) ;
144
+ var xaxisKeys = allKeys . filter ( function ( e ) { return e . indexOf ( 'xaxis' ) === 0 ; } ) ;
145
+ var yaxisKeys = allKeys . filter ( function ( e ) { return e . indexOf ( 'yaxis' ) === 0 ; } ) ;
146
+ xNames = addMatchesInLayout ( xNames , xaxisKeys , layoutIn ) ;
147
+ yNames = addMatchesInLayout ( yNames , yaxisKeys , layoutIn ) ;
148
+
125
149
var axNames = xNames . concat ( yNames ) ;
126
150
127
151
// plot_bgcolor only makes sense if there's a (2D) plot!
0 commit comments