2012-02-03 4 views
84

में विभिन्न लिनस्टाइल के साथ प्रमुख और मामूली ग्रिडलाइन कैसे बनाएं I वर्तमान में ग्राफ़ बनाने के लिए matplotlib.pyplot का उपयोग कर रहे हैं और प्रमुख ग्रिडलाइन ठोस और काले और नाबालिगों को या तो ग्रे या डैश किया जाना चाहते हैं।पाइथन

ग्रिड गुणों में, which=both/major/mine, और फिर रंग और लिनस्टाइल को केवल लिनस्टाइल द्वारा परिभाषित किया जाता है। क्या केवल मामूली लिनस्टाइल निर्दिष्ट करने का कोई तरीका है?

उचित कोड मेरे पास अब तक

plt.plot(current, counts, 'rd', markersize=8) 
plt.yscale('log') 
plt.grid(b=True, which='both', color='0.65', linestyle='-') 

उत्तर

120

वास्तव में, यह अलग से major और minor की स्थापना के रूप में सरल है :

In [9]: plot([23, 456, 676, 89, 906, 34, 2345]) 
Out[9]: [<matplotlib.lines.Line2D at 0x6112f90>] 

In [10]: yscale('log') 

In [11]: grid(b=True, which='major', color='b', linestyle='-') 

In [12]: grid(b=True, which='minor', color='r', linestyle='--') 

मामूली ग्रिड के साथ गोचा यह है कि आपको मामूली टिक अंक भी चालू करना होगा। उपर्युक्त कोड में यह yscale('log') द्वारा किया जाता है, लेकिन यह plt.minorticks_on() के साथ भी किया जा सकता है।

enter image description here

+5

कभी-कभी आपको मामूली ग्रिड के लिए 'plt.minorticks_on() 'को कॉल करने की भी आवश्यकता होती है। Http://stackoverflow.com/a/19940830/209246 – eqzx

+0

देखें [डॉक्स] (https://matplotlib.org/devdocs/api/_as_gen/matplotlib.pyplot.grid.html): "अगर kwargs की आपूर्ति की जाती है, यह माना जाता है कि आप एक ग्रिड चाहते हैं और बी इस प्रकार सत्य पर सेट है। " - तो आप 'बी = ट्रू 'को छोड़ सकते हैं। – miku

18

एक सरल DIY रास्ता ग्रिड खुद के बनाने के लिए होगा:

import matplotlib.pyplot as plt 

fig = plt.figure() 
ax = fig.add_subplot(111) 

ax.plot([1,2,3], [2,3,4], 'ro') 

for xmaj in ax.xaxis.get_majorticklocs(): 
    ax.axvline(x=xmaj, ls='-') 
for xmin in ax.xaxis.get_minorticklocs(): 
    ax.axvline(x=xmin, ls='--') 

for ymaj in ax.yaxis.get_majorticklocs(): 
    ax.axhline(y=ymaj, ls='-') 
for ymin in ax.yaxis.get_minorticklocs(): 
    ax.axhline(y=ymin, ls='--') 
plt.show() 
+0

यह मेरे लिए बहुत अच्छा काम करता है। –