2013-02-21 57 views
43

से चलते समय matplotlib में पूर्व-मौजूदा आंकड़े बंद करें मेरा प्रश्न सरल है: मेरे पास एक पाइथन स्क्रिप्ट है जो matplotlib का उपयोग करके आंकड़े उत्पन्न करती है। हर बार जब मैं इसे चलाता हूं तो यह आंकड़ों के साथ नई खिड़कियां उत्पन्न करता है। मेरे पास स्क्रिप्ट बंद खिड़कियां कैसे हो सकती हैं जो पिछले बार खोले गए थे?ग्रहण

matlab में समान कमांड आपके matlab स्क्रिप्ट की शुरुआत में 'बंद करें' रखना है।

मैं की तरह

import matplotlib.pyplot as plt 
plt.close("all") 

यह समाधान काम करता है अगर तुम अजगर खोल से अपनी स्क्रिप्ट चलाने के लिए, कुछ करने के लिए कई सुझाव जैसे

>>>> execfile("myScript.py") 

हालांकि का उपयोग कर देखा है, मैं इस नहीं करता है कि मिल गया है अगर मैं एक्लिप्स/पायडेव का उपयोग करके स्क्रिप्ट चलाता हूं तो काम नहीं करता। ग्रहण में काम करने के लिए मैं इसे कैसे प्राप्त कर सकता हूं?

उदाहरण:

from numpy import * 
from matplotlib.pyplot import * 
from scipy import * 

close("all") 
    #close any previously open plots - this doesn't work when running via Eclipse 

t = linspace(0, 0.1,1000) 
w = 60*2*pi 

figure() 
plot(t,cos(w*t)) 
plot(t,cos(w*t-2*pi/3)) 
plot(t,cos(w*t-4*pi/3)) 
show() 

यह एक अच्छा 3 चरण बिजली की आपूर्ति के लिए आदर्श waveforms साजिश चाहिए।

उत्तर

56

आप उदाहरण के लिए, matplotlib.pyplot.close को फोन करके एक आंकड़ा बंद कर सकते हैं:

from numpy import * 
import matplotlib.pyplot as plt 
from scipy import * 

t = linspace(0, 0.1,1000) 
w = 60*2*pi 


fig = plt.figure() 
plt.plot(t,cos(w*t)) 
plt.plot(t,cos(w*t-2*pi/3)) 
plt.plot(t,cos(w*t-4*pi/3)) 
plt.show() 
plt.close(fig) 

भी कर सकते हैं सामान्य ग्रहण मामले के लिए matplotlib.pyplot.close("all")

+2

यह एक कंसोल से काम करता है (उदाहरण के लिए पाइथन शेल में'>> execfile ("script.py") 'चल रहा है), लेकिन ग्रहण/PyDev में नहीं। अंतर क्या है? – AnjoMan

+0

अच्छा। शोर के लिए cos (w * t-4 * pi/3) में एक यादृच्छिक वेक्टर जोड़ें। – Andrew

+4

@AnjoMan आपने यह जवाब क्यों स्वीकार किया? यह स्पष्ट रूप से आपके प्रश्न का उत्तर नहीं देता है। – dbliss

3

देखें द्वि रीको के जवाब को फोन करके करीब सभी खुले आंकड़े।

किसी के लिए - मेरे जैसे - यहां पर कौन है - क्योंकि आपके पास बहुत सारी खिड़कियां हैं और आप उन्हें बंद करने के लिए संघर्ष कर रहे हैं, बस अपनी परिस्थितियों के आधार पर पाइथन को मारना प्रभावी हो सकता है। यह लगभग किसी भी परिस्थिति में काम करता है - ग्रहण सहित।

मैंने सिर्फ एमएक्स से 60 भूखंड पैदा किए (मुझे ग्रहण करना पसंद है) और फिर मैंने सोचा कि मेरी लिपि निकल गई है। मेरी आईपीथॉन विंडो में close('all') चल रहा था मेरे लिए काम नहीं किया क्योंकि भूखंड आईपीथॉन से नहीं आए थे, इसलिए मैंने पाइथन प्रक्रियाओं को चलाने का प्रयास किया।

जब मैं दुभाषिया स्क्रिप्ट चलाने की मौत हो गई, तो सभी 60 भूखंडों बंद कर दिया गया - जैसे,

$ ps aux | grep python 
rsage 11665 0.1 0.6 649904 109692 ?  SNl 10:54 0:03 /usr/bin/python3 /usr/bin/update-manager --no-update --no-focus-on-map 
rsage 12111 0.9 0.5 390956 88212 pts/30 Sl+ 11:08 0:17 /usr/bin/python /usr/bin/ipython -pylab 
rsage 12410 31.8 2.4 576640 406304 pts/33 Sl+ 11:38 0:06 python3 ../plot_motor_data.py 
rsage 12431 0.0 0.0 8860 648 pts/32 S+ 11:38 0:00 grep python 

$ kill 12410 

नोट है कि मैं अपने IPython/pylab को मारने नहीं था, न ही मैं अद्यतन प्रबंधक को मारने की थी (की हत्या अद्यतन प्रबंधक शायद एक बुरा विचार है) ...

+0

+1 मेरे पास PyCharm का उपयोग करके समान समस्याएं थीं, मेरे लिए मुख्य बिंदु पायथन प्रक्रिया को मार रहा था जो PyCharm संपादक द्वारा उत्पन्न होता है और अन्य Emacs/Eclipse/PyDev में अनुमान लगाता है। PyCharm में यह नीचे विंडो में लाल "एक्स" पर क्लिक कर रहा है। – shev72