2011-08-25 14 views
23

मेरे पास एक ही अक्ष पर खींची जाने वाली कई रेखाएं हैं, और उनमें से प्रत्येक गतिशील रूप से अपडेट की गई हैं (मैं set_data का उपयोग करता हूं), यह मुद्दा यह है कि मुझे प्रत्येक के x और y सीमाओं से अवगत नहीं है लाइनों। और axes.autoscale_view (सही, सही, सही)/axes.set_autoscale_on (True) वह नहीं कर रहे हैं जो उन्हें माना जाता है। मैं अपने अक्षों को कैसे स्केल करूं?set_data और autoscale_view matplotlib

import matplotlib.pyplot as plt 

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

axes.set_autoscale_on(True) 
axes.autoscale_view(True,True,True) 

l1, = axes.plot([0,0.1,0.2],[1,1.1,1.2]) 
l2, = axes.plot([0,0.1,0.2],[-0.1,0,0.1]) 

#plt.show() #shows the auto scaled. 

l2.set_data([0,0.1,0.2],[-1,-0.9,-0.8]) 

#axes.set_ylim([-2,2]) #this works, but i cannot afford to do this. 

plt.draw() 
plt.show() #does not show auto scaled 

मैं इन पहले से ही, this, this करने के लिए भेजा है। सभी मामलों में मैं पार हो गया हूं, एक्स, वाई सीमाएं ज्ञात हैं। मैं अक्ष पर कई पंक्तियों है और उनकी सीमाओं को बदलने, पूरे डेटा के लिए ymax का ट्रैक रखने व्यावहारिक नहीं है

मुझे इस मिल की खोज के एक छोटा सा,

xmin,xmax,ymin,ymax = matplotlib.figure.FigureImage.get_extent(FigureImage) 

लेकिन यहाँ फिर से, मैं चित्रा उदाहरण से चित्राइमेज तक कैसे पहुंचे, यह नहीं पता।

matplotlib 0.99.3

उत्तर

31

का उपयोग matplotlib docs for autoscale_view से:

डेटा सीमा के बाद कलाकार एक अक्ष उदाहरण में जोड़ा गया है स्वचालित रूप से जब कलाकार डेटा बदल रहे हैं अद्यतन नहीं कर रहे हैं। उस स्थिति में, autoscale_view को कॉल करने से पहले matplotlib.axes.Axes.relim() का उपयोग करें।

तो, आप set_data कॉल के बाद अपने plt.draw() कॉल करने से पहले दो पंक्तियों जोड़ने की आवश्यकता होगी:

axes.relim() 
axes.autoscale_view(True,True,True) 
+1

धन्यवाद! यह आकर्षण की तरह काम किया! – chaitu