@@ -1279,32 +1279,36 @@ def colorbar(
12791279 if ax is None :
12801280 ax = getattr (mappable , "axes" , None )
12811281
1282- if (self .get_layout_engine () is not None and
1283- not self .get_layout_engine ().colorbar_gridspec ):
1284- use_gridspec = False
12851282 if cax is None :
12861283 if ax is None :
12871284 raise ValueError (
12881285 'Unable to determine Axes to steal space for Colorbar. '
12891286 'Either provide the *cax* argument to use as the Axes for '
12901287 'the Colorbar, provide the *ax* argument to steal space '
12911288 'from it, or add *mappable* to an Axes.' )
1292- current_ax = self .gca ()
1289+ fig = ( # Figure of first axes; logic copied from make_axes.
1290+ [* ax .flat ] if isinstance (ax , np .ndarray )
1291+ else [* ax ] if np .iterable (ax )
1292+ else [ax ])[0 ].figure
1293+ current_ax = fig .gca ()
1294+ if (fig .get_layout_engine () is not None and
1295+ not fig .get_layout_engine ().colorbar_gridspec ):
1296+ use_gridspec = False
12931297 if (use_gridspec
12941298 and isinstance (ax , mpl .axes ._base ._AxesBase )
12951299 and ax .get_subplotspec ()):
12961300 cax , kwargs = cbar .make_axes_gridspec (ax , ** kwargs )
12971301 else :
12981302 cax , kwargs = cbar .make_axes (ax , ** kwargs )
12991303 # make_axes calls add_{axes,subplot} which changes gca; undo that.
1300- self .sca (current_ax )
1304+ fig .sca (current_ax )
13011305 cax .grid (visible = False , which = 'both' , axis = 'both' )
13021306
13031307 NON_COLORBAR_KEYS = [ # remove kws that cannot be passed to Colorbar
13041308 'fraction' , 'pad' , 'shrink' , 'aspect' , 'anchor' , 'panchor' ]
13051309 cb = cbar .Colorbar (cax , mappable , ** {
13061310 k : v for k , v in kwargs .items () if k not in NON_COLORBAR_KEYS })
1307- self .stale = True
1311+ cax . figure .stale = True
13081312 return cb
13091313
13101314 def subplots_adjust (self , left = None , bottom = None , right = None , top = None ,
0 commit comments