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出力にも
適してい

5
私はax.set_axisbelow(True)デフォルトになると
思っ

回答:


122

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

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


ラベルを上に保ちながら、グリッド線をバー/ラインの下に置くことは可能ですか?私はまた、このquesitonは、別途掲示stackoverflow.com/questions/29522447/...
joelostblom

それはこのmatplotlib.1069221.n5.nabble.com/…かもしれませんが、古代のスレッドです。
ジャッククヴァム2018年

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機能しない場合は、値を大きくしてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.