@@ -2585,14 +2585,6 @@ def _sanitize_levels(key, array, minsize):
2585
2585
# NOTE: The level restriction should have no effect if levels were generated
2586
2586
# automatically. However want to apply these to manual-input levels as well.
2587
2587
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 )
2596
2588
# Apply default norm
2597
2589
levels = _restrict_levels (levels )
2598
2590
if len (levels ) == 0 : # skip
@@ -2605,6 +2597,15 @@ def _sanitize_levels(key, array, minsize):
2605
2597
norm = _not_none (norm , 'segmented' )
2606
2598
if norm in ('segments' , 'segmented' ):
2607
2599
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 )
2608
2609
2609
2610
return levels , vmin , vmax , norm , norm_kw , kwargs
2610
2611
0 commit comments