How to draw grid lines behind matplotlib bar graph

To add a grid you simply need to add

ax.grid()

If you want the grid to be behind the bars then add

ax.grid(zorder=0)
ax.bar(range(len(y)), y, width=0.3, align='center', color="skyblue", zorder=3)

The important part is that the zorder of the bars is greater than grid. Experimenting it seems zorder=3 is the lowest value that actually gives the desired effect. I have no idea why zorder=1 isn’t sufficient.

EDIT:
I have noticed this question has already been answered here using a different method although it suffers some link rot. Both methods yield the same result as far as I can see but andrew cooke’s answer is more elegant.

Leave a Comment