2013-02-05 18 views
25

का उपयोग कर रहाजोड़ने अतिरिक्त अक्ष matplotlib

plt.plot(x,y) 
plt.show() 

मैं वर्तमान लोगों के अलावा x- अक्ष पर कुछ अतिरिक्त टिक जोड़ना चाहते हैं के रूप में एक सरल साजिश कोड है टिक्स, के

extraticks=[2.1, 3, 7.6] 
पर मान लीजिए

जैसा कि आप देखते हैं कि मेरे पास टिक के लिए कोई पैटर्न नहीं है इसलिए मैं पूरे अक्ष के लिए टिक आवृत्ति को नहीं बढ़ाना चाहता; बस मूल को रखें और उन अतिरिक्त जोड़ें ...

क्या यह संभव है?

सादर

उत्तर

45

हाँ, आप की तरह कुछ की कोशिश कर सकते हैं: उपयोग करने के लिए

plt.xticks(list(plt.xticks()[0]) + extraticks) 

समारोह xticks() है। जब तर्क के बिना बुलाया जाता है, तो यह वर्तमान टिक देता है। तर्कों के साथ इसे कॉल करना, आप टिक स्थिति और वैकल्पिक रूप से लेबल सेट कर सकते हैं।

+2

+1 ग्रेट, संक्षिप्त उत्तर। साइड नोट: आपको वहां 'क्रमबद्ध() 'कॉल करने की आवश्यकता नहीं है। स्पष्ट रूप से हालांकि एक बड़ा सौदा नहीं है। –

+0

नोट @PaulH के लिए धन्यवाद, किसी कारण से मैंने सोचा कि यह सुरक्षित होगा, लेकिन यह इसके बिना भी काम करता है। संपादित। –

+0

अन्य टिकों को ओवरलैप करने से बचने के लिए अतिरिक्त टिकटों की दूरी कैसे बदलें? – Sigur

9

पूर्णता के लिए के लिए, मैं @ लेव-Levitsky के महान जवाब का OO संस्करण देने के लिए करना चाहते हैं:

lines = plt.plot(x,y) 
ax = lines[0].axes 
ax.set_xticks(list(ax.get_xticks()) + extraticks) 

यहाँ हम Axes वस्तु Lines2D अनुक्रम plot द्वारा लौटाए से निकाले का उपयोग करें। आम तौर पर यदि आप ओओ इंटरफेस का उपयोग कर रहे हैं तो आपके पास पहले से ही Axes का संदर्भ होगा और आप पर इसके बजाय plot पर कॉल करेंगे।

कॉर्नर चेतावनी

किसी कारण से आप (प्रोग्राम के डेटा के एक हिस्से को ज़ूम इन करने से जैसे,) अपने अक्ष सीमा को संशोधित किया है, तो आप इस ऑपरेशन के बाद उन्हें बहाल करने के लिए की आवश्यकता होगी:

lim = ax.get_xlim() 
ax.set_xticks(list(ax.get_xticks()) + extraticks) 
ax.set_xlim(lim) 

अन्यथा, साजिश एक्स-अक्ष को अक्ष पर सभी उपलब्ध टिक दिखाएगी।