@@ -579,13 +579,24 @@ def legend_title(self) -> Optional[str]:
579
579
stringified = map (pprint_thing , self .data .columns .names )
580
580
return "," .join (stringified )
581
581
582
- def _add_legend_handle (self , handle , label , index = None ):
583
- if label is not None :
584
- if self .mark_right and index is not None :
585
- if self .on_right (index ):
586
- label = label + " (right)"
587
- self .legend_handles .append (handle )
588
- self .legend_labels .append (label )
582
+ def _mark_right_label (self , label : str , index : int ) -> str :
583
+ """
584
+ Append ``(right)`` to the label of a line if it's plotted on the right axis.
585
+
586
+ Note that ``(right)`` is only appended when ``subplots=False``.
587
+ """
588
+ if not self .subplots and self .mark_right and self .on_right (index ):
589
+ label += " (right)"
590
+ return label
591
+
592
+ def _append_legend_handles_labels (self , handle : Artist , label : str ) -> None :
593
+ """
594
+ Append current handle and label to ``legend_handles`` and ``legend_labels``.
595
+
596
+ These will be used to make the legend.
597
+ """
598
+ self .legend_handles .append (handle )
599
+ self .legend_labels .append (label )
589
600
590
601
def _make_legend (self ):
591
602
ax , leg , handle = self ._get_ax_legend_handle (self .axes [0 ])
@@ -1078,7 +1089,7 @@ def _make_plot(self):
1078
1089
cbar .ax .set_yticklabels (self .data [c ].cat .categories )
1079
1090
1080
1091
if label is not None :
1081
- self ._add_legend_handle (scatter , label )
1092
+ self ._append_legend_handles_labels (scatter , label )
1082
1093
else :
1083
1094
self .legend = False
1084
1095
@@ -1170,6 +1181,7 @@ def _make_plot(self):
1170
1181
kwds = dict (kwds , ** errors )
1171
1182
1172
1183
label = pprint_thing (label ) # .encode('utf-8')
1184
+ label = self ._mark_right_label (label , index = i )
1173
1185
kwds ["label" ] = label
1174
1186
1175
1187
newlines = plotf (
@@ -1182,7 +1194,7 @@ def _make_plot(self):
1182
1194
is_errorbar = is_errorbar ,
1183
1195
** kwds ,
1184
1196
)
1185
- self ._add_legend_handle (newlines [0 ], label , index = i )
1197
+ self ._append_legend_handles_labels (newlines [0 ], label )
1186
1198
1187
1199
if self ._is_ts_plot ():
1188
1200
@@ -1458,6 +1470,7 @@ def _make_plot(self):
1458
1470
kwds = dict (kwds , ** errors )
1459
1471
1460
1472
label = pprint_thing (label )
1473
+ label = self ._mark_right_label (label , index = i )
1461
1474
1462
1475
if (("yerr" in kwds ) or ("xerr" in kwds )) and (kwds .get ("ecolor" ) is None ):
1463
1476
kwds ["ecolor" ] = mpl .rcParams ["xtick.color" ]
@@ -1508,7 +1521,7 @@ def _make_plot(self):
1508
1521
log = self .log ,
1509
1522
** kwds ,
1510
1523
)
1511
- self ._add_legend_handle (rect , label , index = i )
1524
+ self ._append_legend_handles_labels (rect , label )
1512
1525
1513
1526
def _post_plot_logic (self , ax : Axes , data ):
1514
1527
if self .use_index :
@@ -1620,4 +1633,4 @@ def blank_labeler(label, value):
1620
1633
# leglabels is used for legend labels
1621
1634
leglabels = labels if labels is not None else idx
1622
1635
for p , l in zip (patches , leglabels ):
1623
- self ._add_legend_handle (p , l )
1636
+ self ._append_legend_handles_labels (p , l )
0 commit comments