@@ -1271,32 +1271,36 @@ def colorbar(
12711271 if ax is None :
12721272 ax = getattr (mappable , "axes" , None )
12731273
1274- if (self .get_layout_engine () is not None and
1275- not self .get_layout_engine ().colorbar_gridspec ):
1276- use_gridspec = False
12771274 if cax is None :
12781275 if ax is None :
12791276 raise ValueError (
12801277 'Unable to determine Axes to steal space for Colorbar. '
12811278 'Either provide the *cax* argument to use as the Axes for '
12821279 'the Colorbar, provide the *ax* argument to steal space '
12831280 'from it, or add *mappable* to an Axes.' )
1284- current_ax = self .gca ()
1281+ fig = ( # Figure of first axes; logic copied from make_axes.
1282+ [* ax .flat ] if isinstance (ax , np .ndarray )
1283+ else [* ax ] if np .iterable (ax )
1284+ else [ax ])[0 ].figure
1285+ current_ax = fig .gca ()
1286+ if (fig .get_layout_engine () is not None and
1287+ not fig .get_layout_engine ().colorbar_gridspec ):
1288+ use_gridspec = False
12851289 if (use_gridspec
12861290 and isinstance (ax , mpl .axes ._base ._AxesBase )
12871291 and ax .get_subplotspec ()):
12881292 cax , kwargs = cbar .make_axes_gridspec (ax , ** kwargs )
12891293 else :
12901294 cax , kwargs = cbar .make_axes (ax , ** kwargs )
12911295 # make_axes calls add_{axes,subplot} which changes gca; undo that.
1292- self .sca (current_ax )
1296+ fig .sca (current_ax )
12931297 cax .grid (visible = False , which = 'both' , axis = 'both' )
12941298
12951299 NON_COLORBAR_KEYS = [ # remove kws that cannot be passed to Colorbar
12961300 'fraction' , 'pad' , 'shrink' , 'aspect' , 'anchor' , 'panchor' ]
12971301 cb = cbar .Colorbar (cax , mappable , ** {
12981302 k : v for k , v in kwargs .items () if k not in NON_COLORBAR_KEYS })
1299- self .stale = True
1303+ cax . figure .stale = True
13001304 return cb
13011305
13021306 def subplots_adjust (self , left = None , bottom = None , right = None , top = None ,
0 commit comments