पायथन में विभिन्न लिनेस्टी के साथ प्रमुख और मामूली ग्रिडलाइन्स कैसे बनाएं


122

मैं वर्तमान में 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='-')

जवाबों:


174

वास्तव में, यह सेटिंग के रूप में सरल है 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()

यहां छवि विवरण दर्ज करें


33
कभी-कभी आपको plt.minorticks_on()वास्तव में दिखाई देने के लिए मामूली ग्रिड के लिए कॉल करने की आवश्यकता होती है। देखें stackoverflow.com/a/19940830/209246
eqzx

2
से डॉक्स : "kwargs आपूर्ति की जाती है, तो यह माना जाता है कि आप एक ग्रिड चाहते हैं और ख इस प्रकार सही पर सेट है।" - तो आप चूक सकते हैं b=True
मिकू

मैंने डबल लॉग प्लॉट के साथ ऐसा ही करने की कोशिश की है। दुर्भाग्य से एक्स-एक्सिस केवल प्रमुख छड़ें दिखाता है। क्या यह संभव है कि मामूली छड़ें पर भी स्विच करें।
अलेक्जेंडर सेस्का

1
FunctionAlexander आपको फ़ंक्शन में axis="both"पैरामीटर जोड़ने की आवश्यकता है plt.grid()
कनमनी

क्या इसे डिफ़ॉल्ट शैली के रूप में बनाने के लिए एक rcParam संपत्ति है?
कानमनी

21

ग्रिड बनाने के लिए एक सरल 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()
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.