web-dev-qa-db-ja.com

Matplotlib:他のグラフ要素の後ろにグリッド線を描く

Matplotlibでは、次のように破線のグリッド線を作成します。

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

ただし、グリッド線を他のグラフ要素(バーなど)の後ろに描画する方法(または可能であっても)はわかりません。グリッドを追加する順序と他の要素を追加する順序を変更しても違いはありません。

グリッド線が他のすべての後ろに表示されるようにすることは可能ですか?

96
Andrew

これによると http://matplotlib.1069221.n5.nabble.com/axis-elements-and-zorder-td5346.html -Axis.set_axisbelow(True)を使用できます

(私は現在matplotlibを初めてインストールしていますので、それが正しいかどうかわかりません-「matplotlib z order grid」をグーグルで見つけたところです-「z order」は通常この種のことを説明するために使用されます(zは軸です「ページ外」))

91
andrew cooke

私には、アンドリュークックの答えをどのように適用するかがはっきりしていなかったので、これはそれに基づいた完全なソリューションです:

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

allの数字の設定を検証する場合は、次のように設定できます。

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

または

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

Matplotlib> = 2.0で動作します。

22
Syrtis Major

私は同じ問題を抱えており、次のように機能しました:

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

増加する 3それが機能しない場合、より高い値に。

8