@@ -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 } _0' )
2102+ new_cmap = ListedColormap (one_d_lut , name = f'{ self .name } _0' , ** 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 } _1' )
2109+ new_cmap = ListedColormap (one_d_lut , name = f'{ self .name } _1' , ** 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