2014-04-06 11 views
7

मैं एक पायथन प्रोग्राम लिखने की कोशिश कर रहा हूं जो अनिश्चित समय के लिए एक आंकड़ा प्रदर्शित करता है और किसी कुंजीपटल कुंजी दबाए जाने के बाद इसे बंद कर देता है।कीबोर्ड इनपुट द्वारा एक पायथन आंकड़ा कैसे बंद करें?

वास्तव में, अजगर कार्यक्रम इस Matlab कोड के रूप में ही करना चाहिए:

t = 0:0.01:2; 
s = sin(2 * pi * t); 

plot(t,s) 

pause 
close 

अजगर मैं आंकड़ा साजिश कर सकती हूं लेकिन कुंजीपटल इनपुट के बाद कुछ भी नहीं होता।

import numpy as np 
import matplotlib.pyplot as plt 

t = np.arange(0.0, 2.0, 0.01) 
s = np.sin(2*np.pi*t) 

#plt.ion() 
fig = plt.figure() 
plt.plot(t,s) 
#plt.show() 
plt.draw() 

raw_input("PRESS ANY KEY TO CONTINUE.") 
plt.close(fig) 

अब तक मैंने देखा कि plt.close(fig)plt.show() साथ संयोजन के रूप में कुछ भी नहीं है। हालांकि, जब मैं plt.draw() का उपयोग करता हूं, तो plt.close(fig) आकृति को बंद कर रहा है। फिर भी, जब मैं अपने कार्यक्रम में raw_input("PRESS ANY KEY TO CONTINUE.") जोड़ता हूं, तो यह आंकड़ा बिल्कुल दिखाई नहीं देता है।

मैं क्या गलत कर रहा हूं?

मैंने plt.ion() के साथ प्रयोग करने की भी कोशिश की, लेकिन सफलता के बिना।

उत्तर

4

ऐसा कुछ ऐसा हो सकता है?

import numpy as np 
import matplotlib.pyplot as plt 

t = np.arange(0.0, 2.0, 0.01) 
s = np.sin(2*np.pi*t) 


fig = plt.figure() 
plt.plot(t,s) 
#plt.show() 
plt.draw() 
plt.pause(1) # <------- 
raw_input("<Hit Enter To Close>") 
plt.close(fig) 
+0

धन्यवाद, यह काम करता है ... –

+1

@BorisL। तो कृपया जोरन के समाधान को "उत्तर" के रूप में चिह्नित करने पर विचार करें। –

+0

@ जोरन बेस्ले, साजिश खिड़की पृष्ठभूमि में पॉप अप। साजिश पर क्लिक करने और देखने के लिए मुझे अपने माउस का उपयोग करने की ज़रूरत है। क्या साजिश सामने नहीं आ सकती है और बस 'एंटर' या 'क्यू' दबाकर मैं इसे बंद कर सकता हूं (जैसा कि हम gnuplot के लिए करते हैं)? – hbaromega

3

मुझे लगता है कि plt.waitforbuttonpress(0) का उपयोग कर raw_input() का उपयोग करने का चाल का समाधान कर सकता:

import numpy as np 
import matplotlib.pyplot as plt 

t = np.arange(0.0, 2.0, 0.01) 
s = np.sin(2*np.pi*t) 

fig = plt.figure() 
plt.plot(t,s) 
plt.draw() 
plt.waitforbuttonpress(0) # this will wait for indefinite time 
plt.close(fig) 
संबंधित मुद्दे