2009-11-13 97 views
64

在Matplotlib繪製網格線,我做虛網格線如下:Matplotlib:落後於其他圖形元素

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

,我無法找出如何(或者即使是可能的),使網格線會繪製在其他圖形元素(如條形圖)的後面。改變添加網格的順序與添加其他元素的順序沒有區別。

是否有可能使網格線出現在所有其他東西后面?

+7

'ax.set_axisbelow(True)'仍然有效。對於pdf輸出也很好... – BandGap 2013-01-22 19:54:59

回答

61

根據這一點 - http://old.nabble.com/axis-elements-and-zorder-td6119088.html - 您可以使用Axis.set_axisbelow(True)

(我目前正在安裝的第一次matplotlib,所以不知道如果這是正確的 - 我只是覺得通過谷歌搜索「matplotlib Z順序網格」 - 「Z順序」通常用來形容這種事情(z是軸「出頁面」))

+13

Axis.set_axisbelow(True) – Joeya 2012-10-09 16:00:38

+0

將條形圖保留在頂部時是否可以在條形圖/行下面顯示網格線?我還分別發佈了這個問題http://stackoverflow.com/questions/29522447/in-matplotlib-is-there-a-way-to-set-gridlines-below-bars-lines-patches-while-re – 2015-04-08 18:24:15

+0

鏈接我害怕不再工作了。 – pingul 2017-04-19 10:42:56

7

我有同樣的問題,下面的工作:

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

增加3到一個 更高的價值,如果它不起作用。

+7

這是因爲'grid'有一個'zorder = 2.5'。 – farenorth 2015-07-03 21:21:08

47

對我來說,目前還不清楚如何辦理安德魯·庫克的回答,所以這是基於一個完整的解決方案:

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

如果你想驗證設置爲所有數字,您可以設置

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

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

它的工作原理對於Matplotlib> = 2.0。