@@ -31,7 +31,6 @@ def legend_artist(self, legend, orig_handle, fontsize, handlebox)
31
31
from matplotlib .lines import Line2D
32
32
from matplotlib .patches import Rectangle
33
33
import matplotlib .collections as mcoll
34
- import matplotlib .colors as mcolors
35
34
36
35
37
36
def update_from_first_child (tgt , src ):
@@ -734,32 +733,30 @@ class HandlerPolyCollection(HandlerBase):
734
733
"""
735
734
def _update_prop (self , legend_handle , orig_handle ):
736
735
def first_color (colors ):
737
- if colors is None :
738
- return None
739
- colors = mcolors .to_rgba_array (colors )
740
- if len (colors ):
741
- return colors [0 ]
742
- else :
743
- return "none"
736
+ if colors .size == 0 :
737
+ return (0 , 0 , 0 , 0 )
738
+ return tuple (colors [0 ])
744
739
745
740
def get_first (prop_array ):
746
741
if len (prop_array ):
747
742
return prop_array [0 ]
748
743
else :
749
744
return None
750
- edgecolor = getattr (orig_handle , '_original_edgecolor' ,
751
- orig_handle .get_edgecolor ())
752
- legend_handle .set_edgecolor (first_color (edgecolor ))
753
- facecolor = getattr (orig_handle , '_original_facecolor' ,
754
- orig_handle .get_facecolor ())
755
- legend_handle .set_facecolor (first_color (facecolor ))
756
- legend_handle .set_fill (orig_handle .get_fill ())
757
- legend_handle .set_hatch (orig_handle .get_hatch ())
745
+
746
+ # orig_handle is a PolyCollection and legend_handle is a Patch.
747
+ # Directly set Patch color attributes (must be RGBA tuples).
748
+ legend_handle ._facecolor = first_color (orig_handle .get_facecolor ())
749
+ legend_handle ._edgecolor = first_color (orig_handle .get_edgecolor ())
750
+ legend_handle ._fill = orig_handle .get_fill ()
751
+ legend_handle ._hatch = orig_handle .get_hatch ()
752
+ # Hatch color is anomalous in having no getters and setters.
753
+ legend_handle ._hatch_color = orig_handle ._hatch_color
754
+ # Setters are fine for the remaining attributes.
758
755
legend_handle .set_linewidth (get_first (orig_handle .get_linewidths ()))
759
756
legend_handle .set_linestyle (get_first (orig_handle .get_linestyles ()))
760
757
legend_handle .set_transform (get_first (orig_handle .get_transforms ()))
761
758
legend_handle .set_figure (orig_handle .get_figure ())
762
- legend_handle . set_alpha ( orig_handle . get_alpha ())
759
+ # Alpha is already taken into account by the color attributes.
763
760
764
761
def create_artists (self , legend , orig_handle ,
765
762
xdescent , ydescent , width , height , fontsize , trans ):
0 commit comments