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

2024-10-01 07:49:05 发布

您现在位置:Python中文网/ 问答频道 /正文

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)


Tags: sizelenfigbarrangepltaxwidth
3条回答
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.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是不够的

编辑: 我注意到这个问题已经用另一种方法回答了here,尽管它存在一些链接问题。就我所见,这两种方法产生相同的结果,但安德鲁·库克的回答更优雅

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

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

我从this answer那里得到了这个代码

相关问题 更多 >