Python Matplotlib:在其他图形元素后面绘制网格线

Python Matplotlib:在其他图形元素后面绘制网格线,python,matplotlib,grid,Python,Matplotlib,Grid,在Matplotlib中,我按如下方式绘制虚线网格线: fig = pylab.figure() ax = fig.add_subplot(1,1,1) ax.yaxis.grid(color='gray', linestyle='dashed') 但是,我不知道如何(或者即使有可能)在其他图形元素(如条形图)后面绘制网格线。更改添加网格的顺序与添加其他元素的顺序没有区别 有没有可能使网格线显示在其他所有网格线的后面?根据这一点,您可以使用Axis。将Axis设置为低于(True) (

在Matplotlib中,我按如下方式绘制虚线网格线:

fig = pylab.figure()    
ax = fig.add_subplot(1,1,1)
ax.yaxis.grid(color='gray', linestyle='dashed')
但是,我不知道如何(或者即使有可能)在其他图形元素(如条形图)后面绘制网格线。更改添加网格的顺序与添加其他元素的顺序没有区别

有没有可能使网格线显示在其他所有网格线的后面?

根据这一点,您可以使用
Axis。将Axis设置为低于(True)


(我目前是第一次安装matplotlib,所以不知道这是否正确-我只是通过谷歌搜索“matplotlib z order grid”找到了它—“z order”通常用于描述这类事情(z是“页面外”的轴)。

我也遇到了同样的问题,下面的问题得到了解决:

[line.set_zorder(3) for line in ax.lines]
fig.show() # to update

如果不起作用,将
3
增加到一个更高的值。

对我来说,不清楚如何应用andrew cooke的答案,因此这是一个基于以下内容的完整解决方案:

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

如果要验证所有图形的设置,可以设置

plt.rc('axes', axisbelow=True)


它适用于Matplotlib>=2.0。

您可以尝试使用Seaborn的一种样式。例如:

import seaborn as sns  
sns.set_style("whitegrid")

不仅网格线会落后,而且外观会更好。

ax.set\u axisdown(True)
仍然有效。对于pdf输出也很好…我希望
ax.set\u axisdown(True)
是默认值…是否可以将网格线放在条/线下方,同时将标签保留在顶部?我还单独发布了这个问题,可能是这个,虽然是古老的线索。最好的答案,因为人们可能希望所有数据都是一致的。
import seaborn as sns  
sns.set_style("whitegrid")