@@ -871,6 +871,10 @@ def get_bad(self):
871871        self ._ensure_inited ()
872872        return  np .array (self ._lut [self ._i_bad ])
873873
874+     @_api .deprecated ( 
875+         "3.11" , 
876+         pending = True , 
877+         alternative = "cmap.with_extremes(bad=...) or Colormap(bad=...)" ) 
874878    def  set_bad (self , color = 'k' , alpha = None ):
875879        """Set the color for masked values.""" 
876880        self ._set_extremes (bad = (color , alpha ))
@@ -880,6 +884,10 @@ def get_under(self):
880884        self ._ensure_inited ()
881885        return  np .array (self ._lut [self ._i_under ])
882886
887+     @_api .deprecated ( 
888+         "3.11" , 
889+         pending = True , 
890+         alternative = "cmap.with_extremes(under=...) or Colormap(under=...)" ) 
883891    def  set_under (self , color = 'k' , alpha = None ):
884892        """Set the color for low out-of-range values.""" 
885893        self ._set_extremes (under = (color , alpha ))
@@ -889,10 +897,19 @@ def get_over(self):
889897        self ._ensure_inited ()
890898        return  np .array (self ._lut [self ._i_over ])
891899
900+     @_api .deprecated ( 
901+         "3.11" , 
902+         pending = True , 
903+         alternative = "cmap.with_extremes(over=...) or Colormap(over=...)" ) 
892904    def  set_over (self , color = 'k' , alpha = None ):
893905        """Set the color for high out-of-range values.""" 
894906        self ._set_extremes (over = (color , alpha ))
895907
908+     @_api .deprecated ( 
909+         "3.11" , 
910+         pending = True , 
911+         alternative = "cmap.with_extremes(bad=..., under=..., over=...) or "  
912+                     "Colormap(bad=..., under=..., over=...)" ) 
896913    def  set_extremes (self , * , bad = None , under = None , over = None ):
897914        """ 
898915        Set the colors for masked (*bad*) values and, when ``norm.clip = 
@@ -1614,14 +1631,16 @@ def with_extremes(self, *, bad=None, under=None, over=None):
16141631                                 f" i.e. be of length { len (new_cm )}  )
16151632            else :
16161633                for  c , b  in  zip (new_cm , under ):
1617-                     c .set_under (b )
1634+                     # in-place change is ok, since we've just created c as a copy 
1635+                     c ._set_extremes (under = b )
16181636        if  over  is  not None :
16191637            if  not  np .iterable (over ) or  len (over ) !=  len (new_cm ):
16201638                raise  ValueError ("*over* must contain a color for each scalar colormap" 
16211639                                 f" i.e. be of length { len (new_cm )}  )
16221640            else :
16231641                for  c , b  in  zip (new_cm , over ):
1624-                     c .set_over (b )
1642+                     # in-place change is ok, since we've just created c as a copy 
1643+                     c ._set_extremes (over = b )
16251644        return  new_cm 
16261645
16271646    @property  
@@ -2070,26 +2089,27 @@ def __getitem__(self, item):
20702089        """Creates and returns a colorbar along the selected axis""" 
20712090        if  not  self ._isinit :
20722091            self ._init ()
2092+         extremes  =  (
2093+             dict (bad = self ._rgba_bad , over = self ._rgba_outside , under = self ._rgba_outside )
2094+             if  self .shape  in  ['ignore' , 'circleignore' ]
2095+             else  dict (bad = self ._rgba_bad )
2096+         )
20732097        if  item  ==  0 :
20742098            origin_1_as_int  =  int (self ._origin [1 ]* self .M )
20752099            if  origin_1_as_int  >  self .M - 1 :
20762100                origin_1_as_int  =  self .M - 1 
20772101            one_d_lut  =  self ._lut [:, origin_1_as_int ]
2078-             new_cmap  =  ListedColormap (one_d_lut , name = f'{ self .name }  )
2102+             new_cmap  =  ListedColormap (one_d_lut , name = f'{ self .name }  ,  ** extremes )
20792103
20802104        elif  item  ==  1 :
20812105            origin_0_as_int  =  int (self ._origin [0 ]* self .N )
20822106            if  origin_0_as_int  >  self .N - 1 :
20832107                origin_0_as_int  =  self .N - 1 
20842108            one_d_lut  =  self ._lut [origin_0_as_int , :]
2085-             new_cmap  =  ListedColormap (one_d_lut , name = f'{ self .name }  )
2109+             new_cmap  =  ListedColormap (one_d_lut , name = f'{ self .name }  ,  ** extremes )
20862110        else :
20872111            raise  KeyError (f"only 0 or 1 are" 
20882112                           f" valid keys for BivarColormap, not { item !r}  )
2089-         new_cmap ._rgba_bad  =  self ._rgba_bad 
2090-         if  self .shape  in  ['ignore' , 'circleignore' ]:
2091-             new_cmap .set_over (self ._rgba_outside )
2092-             new_cmap .set_under (self ._rgba_outside )
20932113        return  new_cmap 
20942114
20952115    def  _repr_png_ (self ):
0 commit comments