@@ -1308,7 +1308,6 @@ def __init__(self, data, **kwargs):
1308
1308
self .bar_width = kwargs .pop ("width" , 0.5 )
1309
1309
pos = kwargs .pop ("position" , 0.5 )
1310
1310
kwargs .setdefault ("align" , "center" )
1311
- self .tick_pos = np .arange (len (data ))
1312
1311
1313
1312
self .bottom = kwargs .pop ("bottom" , 0 )
1314
1313
self .left = kwargs .pop ("left" , 0 )
@@ -1331,7 +1330,7 @@ def __init__(self, data, **kwargs):
1331
1330
self .tickoffset = self .bar_width * pos
1332
1331
self .lim_offset = 0
1333
1332
1334
- self .ax_pos = self .tick_pos - self . tickoffset
1333
+ self .ax_index = self .data . index
1335
1334
1336
1335
def _args_adjust (self ):
1337
1336
if is_list_like (self .bottom ):
@@ -1358,6 +1357,16 @@ def _make_plot(self):
1358
1357
1359
1358
for i , (label , y ) in enumerate (self ._iter_data (fillna = 0 )):
1360
1359
ax = self ._get_ax (i )
1360
+
1361
+ if self .orientation == 'vertical' :
1362
+ ax .xaxis .update_units (self .ax_index )
1363
+ self .tick_pos = ax .convert_xunits (self .ax_index )
1364
+ self .ax_pos = self .tick_pos - self .tickoffset
1365
+ elif self .orientation == 'horizontal' :
1366
+ ax .yaxis .update_units (self .ax_index )
1367
+ self .tick_pos = ax .convert_yunits (self .ax_index )
1368
+ self .ax_pos = self .tick_pos - self .tickoffset
1369
+
1361
1370
kwds = self .kwds .copy ()
1362
1371
if self ._is_series :
1363
1372
kwds ["color" ] = colors
@@ -1429,8 +1438,8 @@ def _post_plot_logic(self, ax, data):
1429
1438
str_index = [pprint_thing (key ) for key in range (data .shape [0 ])]
1430
1439
name = self ._get_index_name ()
1431
1440
1432
- s_edge = self .ax_pos [ 0 ] - 0.25 + self .lim_offset
1433
- e_edge = self .ax_pos [ - 1 ] + 0.25 + self .bar_width + self .lim_offset
1441
+ s_edge = self .ax_pos . min () - 0.25 + self .lim_offset
1442
+ e_edge = self .ax_pos . max () + 0.25 + self .bar_width + self .lim_offset
1434
1443
1435
1444
self ._decorate_ticks (ax , name , str_index , s_edge , e_edge )
1436
1445
0 commit comments