如何在 matplotlib 条形图后面绘制网格线

x = ['01-02', '02-02', '03-02', '04-02', '05-02']
y = [2, 2, 3, 7, 2]


fig, ax = plt.subplots(1, 1)
ax.bar(range(len(y)), y, width=0.3,align='center',color='skyblue')
plt.xticks(range(len(y)), x, size='small')
plt.savefig('/home/user/graphimages/foo2.png')
plt.close()

我想在条形图后面绘制网格线(x & y)。

93571 次浏览

要添加网格,只需添加

ax.grid()

如果您希望网格位于栏的后面,那么添加

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

重要的部分是,zorder的酒吧是大于网格。实验表明,zorder=3似乎是实际产生预期效果的最低值。我不知道为什么 zorder=1是不够的。

编辑: 我已经注意到这个问题已经回答 给你使用不同的方法,虽然它遭受一些链接腐烂。在我看来,两种方法的结果是一样的,但是 Andrew Cooke 的回答更加优雅。

Grid (zorder = 0)可以。但是首先放置条形图,然后再放置网格。不是另一种方法。

ax = df.plot.bar(x='Index', y='Values', rot=90)
ax.grid(zorder=0)

我使用 Year 进行了一些货币关联,并将其排序为 Data Frame df,下面是代码运行的结果。 I took some currency Correlation with Year and Sorted it as my Data Frame df

plt.grid(True, color = "grey", linewidth = "1.4", linestyle = "-.")

这为我工作,网格线将在灰色边框颜色,如果你想可以改变边框设计为 linestyle = ".." 像这样

plt.grid(True, color = "grey", linewidth = "1.4", linestyle = "..")

总结整个代码块:

fig, ax = plt.subplots(1, 1)
ax.bar(range(len(y)), y, width=0.3,align='center',color='skyblue')
plt.xticks(range(len(y)), x, size='small')
plt.grid(True, color = "grey", linewidth = "1.4", linestyle = "-.")
plt.savefig('/home/user/graphimages/foo2.png')
plt.close()

我建议另一个解决方案,因为最多人投票的答案对我不起作用。可以使用下面的代码设置绘图后面的网格线。

ax.set_axisbelow(True)
ax.grid(color='gray', linestyle='dashed')

我从 这个答案拿到了这个代码。

使用 .grid()它使订单到0(返回)

ax.grid(zorder=0)