@@ -107,9 +107,10 @@ def __init__(self, fig,
107107 share_all = False ,
108108 share_x = True ,
109109 share_y = True ,
110- #aspect=True,
111110 label_mode = "L" ,
112111 axes_class = None ,
112+ * ,
113+ aspect = False ,
113114 ):
114115 """
115116 Parameters
@@ -136,6 +137,7 @@ def __init__(self, fig,
136137 - "all": all axes are labelled.
137138
138139 axes_class : subclass of `matplotlib.axes.Axes`, default: None
140+ aspect : bool, default: False
139141 """
140142 self ._nrows , self ._ncols = nrows_ncols
141143
@@ -155,7 +157,7 @@ def __init__(self, fig,
155157 if axes_class is None :
156158 axes_class = self ._defaultAxesClass
157159
158- kw = dict (horizontal = [], vertical = [], aspect = False )
160+ kw = dict (horizontal = [], vertical = [], aspect = aspect )
159161 if isinstance (rect , (str , Number , SubplotSpec )):
160162 self ._divider = SubplotDivider (fig , rect , ** kw )
161163 elif len (rect ) == 3 :
@@ -182,7 +184,7 @@ def __init__(self, fig,
182184 self .axes_row = axes_array .tolist ()
183185 self .axes_llc = self .axes_column [0 ][- 1 ]
184186
185- self ._update_locators ()
187+ self ._init_locators ()
186188
187189 if add_all :
188190 for ax in self .axes_all :
@@ -195,7 +197,7 @@ def _init_axes_pad(self, axes_pad):
195197 self ._horiz_pad_size = Size .Fixed (axes_pad [0 ])
196198 self ._vert_pad_size = Size .Fixed (axes_pad [1 ])
197199
198- def _update_locators (self ):
200+ def _init_locators (self ):
199201
200202 h = []
201203 h_ax_pos = []
@@ -401,73 +403,20 @@ def __init__(self, fig,
401403 to associated *cbar_axes*.
402404 axes_class : subclass of `matplotlib.axes.Axes`, default: None
403405 """
404- self ._nrows , self ._ncols = nrows_ncols
405-
406- if ngrids is None :
407- ngrids = self ._nrows * self ._ncols
408- else :
409- if not 0 < ngrids <= self ._nrows * self ._ncols :
410- raise Exception
411-
412- self .ngrids = ngrids
413-
414- self ._init_axes_pad (axes_pad )
415-
416406 self ._colorbar_mode = cbar_mode
417407 self ._colorbar_location = cbar_location
418- if cbar_pad is None :
419- # horizontal or vertical arrangement?
420- if cbar_location in ("left" , "right" ):
421- self ._colorbar_pad = self ._horiz_pad_size .fixed_size
422- else :
423- self ._colorbar_pad = self ._vert_pad_size .fixed_size
424- else :
425- self ._colorbar_pad = cbar_pad
426-
408+ self ._colorbar_pad = cbar_pad
427409 self ._colorbar_size = cbar_size
410+ # The colorbar axes are created in _init_locators().
428411
429- cbook ._check_in_list (["column" , "row" ], direction = direction )
430- self ._direction = direction
431-
432- if axes_class is None :
433- axes_class = self ._defaultAxesClass
434-
435- kw = dict (horizontal = [], vertical = [], aspect = aspect )
436- if isinstance (rect , (str , Number , SubplotSpec )):
437- self ._divider = SubplotDivider (fig , rect , ** kw )
438- elif len (rect ) == 3 :
439- self ._divider = SubplotDivider (fig , * rect , ** kw )
440- elif len (rect ) == 4 :
441- self ._divider = Divider (fig , rect , ** kw )
442- else :
443- raise Exception ("" )
444-
445- rect = self ._divider .get_position ()
446-
447- axes_array = np .full ((self ._nrows , self ._ncols ), None , dtype = object )
448- for i in range (self .ngrids ):
449- col , row = self ._get_col_row (i )
450- if share_all :
451- sharex = sharey = axes_array [0 , 0 ]
452- else :
453- sharex = axes_array [0 , col ]
454- sharey = axes_array [row , 0 ]
455- axes_array [row , col ] = axes_class (
456- fig , rect , sharex = sharex , sharey = sharey )
457- self .axes_all = axes_array .ravel ().tolist ()
458- self .axes_column = axes_array .T .tolist ()
459- self .axes_row = axes_array .tolist ()
460- self .axes_llc = self .axes_column [0 ][- 1 ]
461-
462- self .cbar_axes = [
463- self ._defaultCbarAxesClass (fig , rect ,
464- orientation = self ._colorbar_location )
465- for _ in range (self .ngrids )]
466-
467- self ._update_locators ()
412+ super ().__init__ (
413+ fig , rect , nrows_ncols , ngrids ,
414+ direction = direction , axes_pad = axes_pad , add_all = add_all ,
415+ share_all = share_all , share_x = True , share_y = True , aspect = aspect ,
416+ label_mode = label_mode , axes_class = axes_class )
468417
469418 if add_all :
470- for ax in self .axes_all + self . cbar_axes :
419+ for ax in self .cbar_axes :
471420 fig .add_axes (ax )
472421
473422 if cbar_set_cax :
@@ -485,9 +434,20 @@ def __init__(self, fig,
485434 for ax , cax in zip (self .axes_all , self .cbar_axes ):
486435 ax .cax = cax
487436
488- self .set_label_mode (label_mode )
437+ def _init_locators (self ):
438+ # Slightly abusing this method to inject colorbar creation into init.
489439
490- def _update_locators (self ):
440+ if self ._colorbar_pad is None :
441+ # horizontal or vertical arrangement?
442+ if self ._colorbar_location in ("left" , "right" ):
443+ self ._colorbar_pad = self ._horiz_pad_size .fixed_size
444+ else :
445+ self ._colorbar_pad = self ._vert_pad_size .fixed_size
446+ self .cbar_axes = [
447+ self ._defaultCbarAxesClass (
448+ self .axes_all [0 ].figure , self ._divider .get_position (),
449+ orientation = self ._colorbar_location )
450+ for _ in range (self .ngrids )]
491451
492452 cb_mode = self ._colorbar_mode
493453 cb_location = self ._colorbar_location
0 commit comments