@@ -2585,14 +2585,6 @@ def _sanitize_levels(key, array, minsize):
25852585 # NOTE: The level restriction should have no effect if levels were generated
25862586 # automatically. However want to apply these to manual-input levels as well.
25872587 if levels is not None :
2588- # Apply default locator
2589- locator = values if np .iterable (values ) else levels
2590- locator = _restrict_levels (locator )
2591- if norm in ('segments' , 'segmented' ) or isinstance (norm , pcolors .SegmentedNorm ): # noqa: E501
2592- locator = mticker .FixedLocator (locator )
2593- else :
2594- locator = pticker .DiscreteLocator (locator )
2595- guides ._add_guide_kw ('colorbar' , kwargs , locator = locator )
25962588 # Apply default norm
25972589 levels = _restrict_levels (levels )
25982590 if len (levels ) == 0 : # skip
@@ -2605,6 +2597,15 @@ def _sanitize_levels(key, array, minsize):
26052597 norm = _not_none (norm , 'segmented' )
26062598 if norm in ('segments' , 'segmented' ):
26072599 norm_kw ['levels' ] = levels
2600+ # Apply default locator
2601+ # WARNING: This must come after default application of segmented norm
2602+ locator = values if np .iterable (values ) else levels
2603+ locator = _restrict_levels (locator )
2604+ if norm in ('segments' , 'segmented' ) or isinstance (norm , pcolors .SegmentedNorm ): # noqa: E501
2605+ locator = mticker .FixedLocator (locator )
2606+ else :
2607+ locator = pticker .DiscreteLocator (locator )
2608+ guides ._add_guide_kw ('colorbar' , kwargs , locator = locator )
26082609
26092610 return levels , vmin , vmax , norm , norm_kw , kwargs
26102611
0 commit comments