2010-11-09 8 views
48

मैं पायलट के साथ एक मानक 2 डी लाइन ग्राफ तैयार करना चाहता हूं, लेकिन एक्स पर अक्षरों के मानों को 0 और 600 के बीच, और 10k और 20k पर y पर मजबूर करना होगा। मुझे एक उदाहरण के साथ जाने दो ...Matplotlib/pyplot: अक्ष श्रेणी को कैसे लागू करें?

import pylab as p 

p.title(save_file) 
p.axis([0.0,600.0,1000000.0,2000000.0]) 

#define keys and items elsewhere.. 
p.plot(keys,items) 
p.savefig(save_file, dpi=100) 

हालांकि, अक्ष अभी भी डेटा के आकार में समायोजित हैं। मैं पी.एक्सिस के प्रभाव को समझने के लिए कर रहा हूं कि अधिकतम और न्यूनतम क्या हो सकता है, उन्हें अधिकतम या न्यूनतम होने के लिए लागू नहीं किया जा रहा है। वही होता है जब मैं p.xlim() इत्यादि का उपयोग करने का प्रयास करता हूं

कोई विचार?

धन्यवाद।

+1

अतिरिक्त में: http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.axis – Calvin1602

उत्तर

23

अपने ही सवाल का जवाब करने के लिए, चाल ऑटो स्केलिंग बंद करने के लिए ...

p.axis([0.0,600.0, 10000.0,20000.0]) 
ax = p.gca() 
ax.set_autoscale_on(False) 
35

p.plot कॉलिंग के बाद सीमा सेट वजह है कि यह rescaling जाता है। आपको लगता है कि मोड़ बंद autoscaling सही जवाब मिल जाएगा में सही कर रहे हैं, लेकिन इतना के बाद अपने plot आदेश xlim() या ylim()बुला होगा।

मैं यह काफी एक बहुत का उपयोग एक्स अक्ष को उलटने के लिए, मैं खगोल विज्ञान में काम करते हैं और हम एक परिमाण प्रणाली है जो पीछे की ओर है का उपयोग (यानी। उज्जवल सितारों एक छोटे परिमाण है) तो मैं आमतौर पर

lims = xlim() 
xlim([lims[1], lims[0]]) 
साथ सीमा स्वैप
+2

आप 'ax1.invert_xaxis साथ धुरी उल्टे प्राप्त कर सकते हैं() '। – Adobe

7

सभी साजिश आदेशों के बाद कॉल को axis पर डालने का प्रयास करें।

+0

इस प्रकार ऑटोस्केल काम करता है। यदि आप आकृति बदलते हैं, तो आकृति कॉल ऑटोटेल करें। "अक्ष" कमांड ऑटोस्केल को कॉल नहीं करता है। "प्लॉट" की तुलना में अन्य आदेश जो ऑटोस्केल कहते हैं, वे लॉगस्केल हैं और संबंधित स्थानों पर टिकटें हैं। Autoscale सुनिश्चित करता है कि छेड़छाड़ टिक स्थानों को दिखाया गया है। – Juha

10

मैंने उपरोक्त सभी उत्तरों की कोशिश की, और फिर मैंने निश्चित-अक्ष छवि को आकर्षित करने के तरीके की एक पाइपलाइन का सारांश दिया। यह show फ़ंक्शन और savefig फ़ंक्शन दोनों पर लागू होता है।

  1. तुम से पहले साजिश:

    fig = pylab.figure() 
    ax = fig.gca() 
    ax.set_autoscale_on(False) 
    

यह एक ax जो subplot(1,1,1) है अनुरोध करने के लिए है।

  1. साजिश के दौरान:

    ax.plot('You plot argument') # Put inside your argument, like ax.plot(x,y,label='test') 
    ax.axis('The list of range') # Put in side your range [xmin,xmax,ymin,ymax], like ax.axis([-5,5,-5,200]) 
    
  2. साजिश के बाद:

    fig.show() 
    
  3. :

    1. छवि दिखाने के लिए आकृति को बचाने के लिए:

      fig.savefig('the name of your figure') 
      

मुझे लगता है कि कोड के सामने axis डाल भले ही मैं False करने के लिए autoscale_on निर्धारित किया है काम नहीं करेगा पता लगाना।

मैंने एनीमेशन की एक श्रृंखला बनाने के लिए इस कोड का उपयोग किया। और नीचे एक एनीमेशन में एकाधिक फिक्स्ड अक्ष छवियों को जोड़ने का उदाहरण है। img

नीचे जवाब, 'धुरी' डॉक के लिए सीधा लिंक के लिए
संबंधित मुद्दे