When I plot data sampled per month with bars, their width is very thin. If I set X axis minor locator to DayLocator(), I can see the bars width is adjusted to 1 day, but I would
Just use the width keyword argument:
width
bar(x, y, width=30)
Or, since different months have different numbers of days, to make it look good you can use a sequence:
bar(x, y, width=[(x[j+1]-x[j]).days for j in range(len(x)-1)] + [30])