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

在Matplotlib中,我做了如下网格线:

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

但是,我无法find如何(或者即使有可能)使网格线被绘制在其他graphics元素(如条)之后。 改变添加网格的顺序与添加其他元素的顺序没有区别。

是否有可能使网格线出现在所有其他东西后面?

根据这个 – http://old.nabble.com/axis-elements-and-zorder-td6119088.html – 你可以使用Axis.set_axisbelow()

(我目前第一次安装matplotlib,所以不知道这是否正确 – 我只是通过使用googlesearch“matplotlib z order grid”来find它 – “z order”通常用来描述这种事情(z是轴“out of the page”))

对我来说,目前还不清楚如何申请cooke的答案,所以这是一个完整的解决scheme:

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

如果你想validation所有数字的设置,你可以设置

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

要么

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

它适用于Matplotlib> = 2.0。

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

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

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