@@ -651,38 +651,24 @@ def draw(self, renderer):
651
651
652
652
@classmethod
653
653
def get_default_handler_map (cls ):
654
- """
655
- A class method that returns the default handler map.
656
- """
654
+ """Return the global default handler map, shared by all legends."""
657
655
return cls ._default_handler_map
658
656
659
657
@classmethod
660
658
def set_default_handler_map (cls , handler_map ):
661
- """
662
- A class method to set the default handler map.
663
- """
659
+ """Set the global default handler map, shared by all legends."""
664
660
cls ._default_handler_map = handler_map
665
661
666
662
@classmethod
667
663
def update_default_handler_map (cls , handler_map ):
668
- """
669
- A class method to update the default handler map.
670
- """
664
+ """Update the global default handler map, shared by all legends."""
671
665
cls ._default_handler_map .update (handler_map )
672
666
673
667
def get_legend_handler_map (self ):
674
- """
675
- Return the handler map.
676
- """
677
-
668
+ """Return this legend instance's handler map."""
678
669
default_handler_map = self .get_default_handler_map ()
679
-
680
- if self ._custom_handler_map :
681
- hm = default_handler_map .copy ()
682
- hm .update (self ._custom_handler_map )
683
- return hm
684
- else :
685
- return default_handler_map
670
+ return ({** default_handler_map , ** self ._custom_handler_map }
671
+ if self ._custom_handler_map else default_handler_map )
686
672
687
673
@staticmethod
688
674
def get_legend_handler (legend_handler_map , orig_handle ):
@@ -1105,11 +1091,7 @@ def get_draggable(self):
1105
1091
# Helper functions to parse legend arguments for both `figure.legend` and
1106
1092
# `axes.legend`:
1107
1093
def _get_legend_handles (axs , legend_handler_map = None ):
1108
- """
1109
- Return a generator of artists that can be used as handles in
1110
- a legend.
1111
-
1112
- """
1094
+ """Yield artists that can be used as handles in a legend."""
1113
1095
handles_original = []
1114
1096
for ax in axs :
1115
1097
handles_original += [
@@ -1124,28 +1106,19 @@ def _get_legend_handles(axs, legend_handler_map=None):
1124
1106
if isinstance (a , (Line2D , Patch , Collection ))),
1125
1107
* axx .containers ]
1126
1108
1127
- handler_map = Legend .get_default_handler_map ()
1128
-
1129
- if legend_handler_map is not None :
1130
- handler_map = handler_map .copy ()
1131
- handler_map .update (legend_handler_map )
1132
-
1109
+ handler_map = {** Legend .get_default_handler_map (),
1110
+ ** (legend_handler_map or {})}
1133
1111
has_handler = Legend .get_legend_handler
1134
-
1135
1112
for handle in handles_original :
1136
1113
label = handle .get_label ()
1137
1114
if label != '_nolegend_' and has_handler (handler_map , handle ):
1138
1115
yield handle
1139
1116
1140
1117
1141
1118
def _get_legend_handles_labels (axs , legend_handler_map = None ):
1142
- """
1143
- Return handles and labels for legend, internal method.
1144
-
1145
- """
1119
+ """Return handles and labels for legend."""
1146
1120
handles = []
1147
1121
labels = []
1148
-
1149
1122
for handle in _get_legend_handles (axs , legend_handler_map ):
1150
1123
label = handle .get_label ()
1151
1124
if label and not label .startswith ('_' ):
@@ -1201,7 +1174,7 @@ def _parse_legend_args(axs, *args, handles=None, labels=None, **kwargs):
1201
1174
"""
1202
1175
log = logging .getLogger (__name__ )
1203
1176
1204
- handlers = kwargs .get ('handler_map' , {}) or {}
1177
+ handlers = kwargs .get ('handler_map' )
1205
1178
extra_args = ()
1206
1179
1207
1180
if (handles is not None or labels is not None ) and args :
0 commit comments