@@ -1295,7 +1295,6 @@ def __init__(self, data, **kwargs):
1295
1295
self .bar_width = kwargs .pop ("width" , 0.5 )
1296
1296
pos = kwargs .pop ("position" , 0.5 )
1297
1297
kwargs .setdefault ("align" , "center" )
1298
- self .tick_pos = np .arange (len (data ))
1299
1298
1300
1299
self .bottom = kwargs .pop ("bottom" , 0 )
1301
1300
self .left = kwargs .pop ("left" , 0 )
@@ -1318,7 +1317,7 @@ def __init__(self, data, **kwargs):
1318
1317
self .tickoffset = self .bar_width * pos
1319
1318
self .lim_offset = 0
1320
1319
1321
- self .ax_pos = self .tick_pos - self . tickoffset
1320
+ self .ax_index = self .data . index
1322
1321
1323
1322
def _args_adjust (self ):
1324
1323
if is_list_like (self .bottom ):
@@ -1345,6 +1344,16 @@ def _make_plot(self):
1345
1344
1346
1345
for i , (label , y ) in enumerate (self ._iter_data (fillna = 0 )):
1347
1346
ax = self ._get_ax (i )
1347
+
1348
+ if self .orientation == 'vertical' :
1349
+ ax .xaxis .update_units (self .ax_index )
1350
+ self .tick_pos = ax .convert_xunits (self .ax_index )
1351
+ self .ax_pos = self .tick_pos - self .tickoffset
1352
+ elif self .orientation == 'horizontal' :
1353
+ ax .yaxis .update_units (self .ax_index )
1354
+ self .tick_pos = ax .convert_yunits (self .ax_index )
1355
+ self .ax_pos = self .tick_pos - self .tickoffset
1356
+
1348
1357
kwds = self .kwds .copy ()
1349
1358
if self ._is_series :
1350
1359
kwds ["color" ] = colors
@@ -1416,8 +1425,8 @@ def _post_plot_logic(self, ax, data):
1416
1425
str_index = [pprint_thing (key ) for key in range (data .shape [0 ])]
1417
1426
name = self ._get_index_name ()
1418
1427
1419
- s_edge = self .ax_pos [ 0 ] - 0.25 + self .lim_offset
1420
- e_edge = self .ax_pos [ - 1 ] + 0.25 + self .bar_width + self .lim_offset
1428
+ s_edge = self .ax_pos . min () - 0.25 + self .lim_offset
1429
+ e_edge = self .ax_pos . max () + 0.25 + self .bar_width + self .lim_offset
1421
1430
1422
1431
self ._decorate_ticks (ax , name , str_index , s_edge , e_edge )
1423
1432
0 commit comments