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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matplotlib:在其他图形元素后面绘制网格线相关的知识,希望对你有一定的参考价值。

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

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

但是,我无法弄清楚如何(或者甚至可能)使网格线在其他图形元素(如条形图)后面绘制。更改添加网格与添加其他元素的顺序没有区别。

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

答案

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

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

另一答案

对我来说,目前还不清楚如何应用andrew cooke的答案,所以这是一个完整的解决方案,基于:

ax.set_axisbelow(True)
ax.yaxis.grid(color='gray', linestyle='dashed')
另一答案

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

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

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

以上是关于Matplotlib:在其他图形元素后面绘制网格线的主要内容,如果未能解决你的问题,请参考以下文章

Matplotlib 安装

python学习之数据分析绘图

Matplotlib 基本概念

在 matplotlib imshow 中调整网格线和刻度线

让垂直网格线出现在 matplotlib 的线图中

修改 matplotlib.pyplot 图中的网格