@@ -877,9 +877,7 @@ def get_bad(self):
877877
878878 def set_bad (self , color = 'k' , alpha = None ):
879879 """Set the color for masked values."""
880- self ._rgba_bad = to_rgba (color , alpha )
881- if self ._isinit :
882- self ._set_extremes ()
880+ self ._set_extremes (bad = (color , alpha ))
883881
884882 def get_under (self ):
885883 """Get the color for low out-of-range values."""
@@ -889,9 +887,7 @@ def get_under(self):
889887
890888 def set_under (self , color = 'k' , alpha = None ):
891889 """Set the color for low out-of-range values."""
892- self ._rgba_under = to_rgba (color , alpha )
893- if self ._isinit :
894- self ._set_extremes ()
890+ self ._set_extremes (under = (color , alpha ))
895891
896892 def get_over (self ):
897893 """Get the color for high out-of-range values."""
@@ -901,21 +897,14 @@ def get_over(self):
901897
902898 def set_over (self , color = 'k' , alpha = None ):
903899 """Set the color for high out-of-range values."""
904- self ._rgba_over = to_rgba (color , alpha )
905- if self ._isinit :
906- self ._set_extremes ()
900+ self ._set_extremes (over = (color , alpha ))
907901
908902 def set_extremes (self , * , bad = None , under = None , over = None ):
909903 """
910904 Set the colors for masked (*bad*) values and, when ``norm.clip =
911905 False``, low (*under*) and high (*over*) out-of-range values.
912906 """
913- if bad is not None :
914- self .set_bad (bad )
915- if under is not None :
916- self .set_under (under )
917- if over is not None :
918- self .set_over (over )
907+ self ._set_extremes (bad = bad , under = under , over = over )
919908
920909 def with_extremes (self , * , bad = None , under = None , over = None ):
921910 """
@@ -924,10 +913,26 @@ def with_extremes(self, *, bad=None, under=None, over=None):
924913 out-of-range values, have been set accordingly.
925914 """
926915 new_cm = self .copy ()
927- new_cm .set_extremes (bad = bad , under = under , over = over )
916+ new_cm ._set_extremes (bad = bad , under = under , over = over )
928917 return new_cm
929918
930- def _set_extremes (self ):
919+ def _set_extremes (self , bad = None , under = None , over = None ):
920+ """
921+ Set the colors for masked (*bad*) and out-of-range (*under* and *over*) values.
922+
923+ Parameters that are None are left unchanged.
924+ """
925+ if bad is not None :
926+ self ._rgba_bad = to_rgba (bad )
927+ if under is not None :
928+ self ._rgba_under = to_rgba (under )
929+ if over is not None :
930+ self ._rgba_over = to_rgba (over )
931+ if self ._isinit :
932+ self ._update_lut_extremes ()
933+
934+ def _update_lut_extremes (self ):
935+ """Ensure than an existing lookup table has the correct extreme values."""
931936 if self ._rgba_under :
932937 self ._lut [self ._i_under ] = self ._rgba_under
933938 else :
@@ -1154,7 +1159,7 @@ def _init(self):
11541159 self ._lut [:- 3 , 3 ] = _create_lookup_table (
11551160 self .N , self ._segmentdata ['alpha' ], 1 )
11561161 self ._isinit = True
1157- self ._set_extremes ()
1162+ self ._update_lut_extremes ()
11581163
11591164 def set_gamma (self , gamma ):
11601165 """Set a new gamma value and regenerate colormap."""
@@ -1346,7 +1351,7 @@ def _init(self):
13461351 self ._lut = np .zeros ((self .N + 3 , 4 ), float )
13471352 self ._lut [:- 3 ] = to_rgba_array (self .colors )
13481353 self ._isinit = True
1349- self ._set_extremes ()
1354+ self ._update_lut_extremes ()
13501355
13511356 @property
13521357 def monochrome (self ):
0 commit comments