Matplotlib: Diğer grafik öğelerinin arkasına ızgara çizgileri çizin


124

Matplotlib'de aşağıdaki gibi kesikli ızgara çizgileri yapıyorum:

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

ancak, ızgara çizgilerinin çubuklar gibi diğer grafik öğelerinin arkasına nasıl çizileceğini (veya mümkün olsa bile) bulamıyorum. Izgara ekleme sırasını değiştirmek yerine başka öğeler eklemek hiçbir fark yaratmaz.

Izgara çizgilerinin her şeyin arkasında görünmesini sağlamak mümkün mü?


10
ax.set_axisbelow(True)hala çalışıyor. Pdf çıktısı için de güzel ...
BandGap

5
ax.set_axisbelow(True)Varsayılan ben olmayı
beklerdim

Yanıtlar:


122

Buna göre - http://matplotlib.1069221.n5.nabble.com/axis-elements-and-zorder-td5346.html - kullanabilirsinizAxis.set_axisbelow(True)

(Şu anda matplotlib'i ilk kez kuruyorum, bu yüzden doğru olup olmadığına dair hiçbir fikrim yok - "matplotlib z sipariş ızgarası" nı googling yaparak buldum - "z sırası" genellikle bu tür şeyleri tanımlamak için kullanılır (z ekseni "sayfa dışı"))


Etiketleri üstte tutarken kılavuz çizgilerinin çubuğun / çizginin altında olması mümkün müdür? Ben de bu
soruyu

Bu matplotlib.1069221.n5.nabble.com/… olabilir , ancak eski ileti dizisi.
Jacques Kvam

86

Bana göre, Andrew cooke'un cevabının nasıl uygulanacağı belirsizdi, bu yüzden bu, buna dayalı eksiksiz bir çözüm:

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

34

Tüm rakamlar için ayarı onaylamak istiyorsanız,

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

veya

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

Matplotlib> = 2.0 için çalışır.


8

Aynı sorunu yaşadım ve aşağıdakiler işe yaradı:

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

Çalışmazsa 3daha yüksek bir değere yükseltin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.