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


123

在Matplotlib中,我按如下所示制作虚线网格:

fig = pylab.figure()    
ax = fig.add_subplot(1,1,1)
ax.yaxis.grid(color='gray', linestyle='dashed')

但是,我不知道如何(甚至可能)在其他图形元素(如条形图)后面绘制网格线。更改添加网格的顺序与添加其他元素的顺序没有区别。

是否有可能使网格线出现在其他所有内容的后面?


10
ax.set_axisbelow(True)仍然有效。pdf输出也很好...
BandGap 2013年

5
我本来希望ax.set_axisbelow(True)是默认的...
PatrickT

Answers:


122

据此-http://matplotlib.1069221.n5.nabble.com/axis-elements-and-zorder-td5346.html-您可以使用Axis.set_axisbelow(True)

(我目前是第一次安装matplotlib,所以不知道这是否正确-我只是通过谷歌搜索“ matplotlib z顺序网格”找到它的-通常,“ z顺序”用于描述这种情况(z为轴“页面外”))


是否可以使网格线位于条形图/线下,同时将标签保留在顶部?我还张贴了这个quesiton分别stackoverflow.com/questions/29522447/...
joelostblom

可能是这个matplotlib.1069221.n5.nabble.com/…,虽然是古老的线程。
雅克·克瓦姆

86

对我来说,目前尚不清楚如何应用安德鲁·库克的答案,因此这是基于此的完整解决方案:

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

34

如果要验证所有数字的设置,可以设置

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

要么

plt.rcParams['axes.axisbelow'] = True

它适用于Matplotlib> = 2.0。


8

我有同样的问题,以下工作:

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

提高3到一个更高的值,如果它不能正常工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.