Matplotlib: अन्य ग्राफ़ तत्वों के पीछे ग्रिड लाइनें बनाएँ


124

Matplotlib में, मैं निम्न प्रकार से धराशायी ग्रिड लाइनें बनाता हूं:

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

हालाँकि, मैं यह नहीं पता लगा सकता कि ग्रिड लाइनों को अन्य ग्राफ़ तत्वों के पीछे खींचने के लिए कैसे (या यहां तक ​​कि अगर यह संभव है) भी हो सकता है। ग्रिड जोड़ने बनाम अन्य तत्वों को जोड़ने के क्रम को बदलने से कोई फर्क नहीं पड़ता है।

क्या इसे बनाना संभव है ताकि ग्रिड लाइनें सब कुछ के पीछे दिखाई दें?


10
ax.set_axisbelow(True)अभी भी काम करता है। पीडीएफ आउटपुट के लिए भी अच्छा है ...
BandGap

5
मैं अपेक्षा की होगी ax.set_axisbelow(True)डिफ़ॉल्ट होने के लिए ...
PatrickT

जवाबों:


122

इसके अनुसार - http://matplotlib.1069221.n5.nabble.com/axis-elements-and-zorder-td5346.html - आप उपयोग कर सकते हैंAxis.set_axisbelow(True)

(मैं वर्तमान में पहली बार matplotlib स्थापित कर रहा हूं, इसलिए कोई विचार नहीं है अगर यह सही है - मैंने इसे "matplotlib z ऑर्डर ग्रिड" के रूप में जाना है - "z ऑर्डर" का उपयोग आमतौर पर इस तरह की चीज़ का वर्णन करने के लिए किया जाता है (z अक्ष होना) "पृष्ठ से बाहर"))


क्या शीर्ष पर लेबल को बनाए रखते हुए बार / लाइन के नीचे ग्रिडलाइन्स होना संभव है? मैंने इस quesiton को अलग से stackoverflow.com/questions/29522447/…
joelostblom

हालांकि यह matplotlib.1069221.n5.nabble.com/… , प्राचीन धागा हो सकता है ।
जैक्स केवम

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काम नहीं करता है तो एक उच्च मूल्य तक बढ़ाएं ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.