@@ -754,6 +754,10 @@ def _plot(cls, ax: Axes, x, y, style=None, is_errorbar: bool = False, **kwds):
754
754
args = (x , y , style ) if style is not None else (x , y )
755
755
return ax .plot (* args , ** kwds )
756
756
757
+ def _get_custom_index_name (self ):
758
+ """Specify whether xlabel/ylabel should be used to override index name"""
759
+ return self .xlabel
760
+
757
761
def _get_index_name (self ) -> str | None :
758
762
if isinstance (self .data .index , ABCMultiIndex ):
759
763
name = self .data .index .names
@@ -766,9 +770,10 @@ def _get_index_name(self) -> str | None:
766
770
if name is not None :
767
771
name = pprint_thing (name )
768
772
769
- # GH 9093, override the default xlabel if xlabel is provided.
770
- if self .xlabel is not None :
771
- name = pprint_thing (self .xlabel )
773
+ # GH 45145, override the default axis label if one is provided.
774
+ index_name = self ._get_custom_index_name ()
775
+ if index_name is not None :
776
+ name = pprint_thing (index_name )
772
777
773
778
return name
774
779
@@ -1572,12 +1577,11 @@ def _post_plot_logic(self, ax: Axes, data):
1572
1577
str_index = [pprint_thing (key ) for key in data .index ]
1573
1578
else :
1574
1579
str_index = [pprint_thing (key ) for key in range (data .shape [0 ])]
1575
- name = self ._get_index_name ()
1576
1580
1577
1581
s_edge = self .ax_pos [0 ] - 0.25 + self .lim_offset
1578
1582
e_edge = self .ax_pos [- 1 ] + 0.25 + self .bar_width + self .lim_offset
1579
1583
1580
- self ._decorate_ticks (ax , name , str_index , s_edge , e_edge )
1584
+ self ._decorate_ticks (ax , self . _get_index_name () , str_index , s_edge , e_edge )
1581
1585
1582
1586
def _decorate_ticks (self , ax : Axes , name , ticklabels , start_edge , end_edge ):
1583
1587
ax .set_xlim ((start_edge , end_edge ))
@@ -1608,13 +1612,17 @@ def _plot( # type: ignore[override]
1608
1612
):
1609
1613
return ax .barh (x , y , w , left = start , log = log , ** kwds )
1610
1614
1615
+ def _get_custom_index_name (self ):
1616
+ return self .ylabel
1617
+
1611
1618
def _decorate_ticks (self , ax : Axes , name , ticklabels , start_edge , end_edge ):
1612
1619
# horizontal bars
1613
1620
ax .set_ylim ((start_edge , end_edge ))
1614
1621
ax .set_yticks (self .tick_pos )
1615
1622
ax .set_yticklabels (ticklabels )
1616
1623
if name is not None and self .use_index :
1617
1624
ax .set_ylabel (name )
1625
+ ax .set_xlabel (self .xlabel )
1618
1626
1619
1627
1620
1628
class PiePlot (MPLPlot ):
0 commit comments