2011-09-26 7 views
8

मैं इंटरैक्टिव मोड में matplotlib उपयोग कर रहा हूँ उपयोगकर्ता एक साजिश उन्हें चर की एक सीमा में प्रवेश में मदद मिलेगी दिखाने के लिए। उनके पास "?" मारने का विकल्प है इस साजिश को दिखाने के लिए, और चर के लिए संकेत दोहराया जाएगा।matplotlib इंटरैक्टिव मोड: निर्धारित करता है, तो आंकड़ा खिड़की अब भी है दिखाया गया

मैं कैसे फिर से आकर्षित इस साजिश यदि यह अभी भी प्रदर्शित किया जा रहा है नहीं करने के लिए जानते हैं?

answer = None 
done_plot = False 
while answer == None: 
    answer = get_answer() 
    if answer == '?': 
     if done_plot: 
      have_closed = True 
      ##user's already requested a plot - has s/he closed it? 
      ## some check here needed: 
      have_closed = ????? 

      if have_closed == False: 
       print 'You already have the plot on display, will not re-draw' 
       answer = None 
       continue 
     plt.ion() 
     fig = plt.figure() 
     ### plotting stuff 
     done_plot = True 
     answer = None 
    else: 
     ###have an answer from the user... 

क्या मैं (plt.gca(), अंजीर आदि ... के संदर्भ में) का उपयोग कर सकते निर्धारित करने के लिए अगर मैं की जरूरत है:

अल्पज्ञता, मैं इस भद्दा (छद्म-ish) कोड है फिर से साजिश? क्या कोई ऐसी स्थिति है जहां मैं जांच कर सकता हूं?

बहुत धन्यवाद,

डेविड

+0

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

उत्तर

12

unutbu के जवाब के रूप में उसी तरह से, आपको यह भी जाँच एक दिया आंकड़ा अभी भी

import matplotlib.pyplot as plt 

if plt.fignum_exists(<figure number>): 
    # Figure is still opened 
else: 
    # Figure is closed 

का आंकड़ा संख्या के साथ खोला जाता है कि क्या कर सकते हैं एक आंकड़ा fig.number में है।

पुनश्च: ध्यान दें कि "संख्या" figure(num=…) में वास्तव में एक स्ट्रिंग हो सकती है: यह विंडो शीर्षक में प्रदर्शित होता है। हालांकि, यह आंकड़ा अभी भी एक number विशेषता है जो संख्यात्मक है: मूल स्ट्रिंग num मूल्य fignum_exists() साथ नहीं किया जा सकता है।

पीपीएस: उस ने कहा, subplots(…, num=<string num>) दिए गए स्ट्रिंग संख्या के साथ मौजूदा आंकड़े को ठीक से ठीक करता है। इस प्रकार, Matplotlib के कुछ हिस्सों में आंकड़े अभी भी उनके स्ट्रिंग नंबर से ज्ञात हैं (लेकिन fignum_exists() ऐसे तारों का उपयोग नहीं करता है)।

7
import matplotlib.pyplot as plt 
if plt.get_fignums(): 
    # window(s) open 
else: 
    # no windows 
+2

'matplotlib.pyplot.get_fignums()' अतिरिक्त आयात के बिना लगभग एक ही चीज़ करता है। – Avaris

+0

@Avaris: धन्यवाद, यह बेहतर है। – unutbu

संबंधित मुद्दे