2013-11-14 13 views
5

मै मैप्टन नोटबुक का उपयोग मैटलप्लिब के साथ बहुत अधिक करता हूं और जब मैं खुश हूं तो बहुत सारे मामले हैं जब मैं imshow() कहता हूं तो यह स्वचालित रूप से छवियों को प्रदर्शित करता है, जब मैं उस व्यवहार को रोकना चाहता हूं।iPython नोटबुक: imshow() पर छवि आउटपुट से कैसे रोकें?

विशेष रूप से मैं एक बहुत बड़ी सरणी पर लूपिंग कर रहा हूं और प्रत्येक तत्व के लिए matplotlib में एक आकृति उत्पन्न करता हूं जिसे डिस्क में सहेजा जाना चाहिए। उस आकृति निर्माण के हिस्से के रूप में मुझे अक्षरों को एक बाहरी छवि (मेरे मामले में मानचित्र के स्क्रीनशॉट) को अक्ष के लिए अतिरिक्त सामग्री खींचने के बाद बाद में imshow() को कॉल करना होगा। जब भी मैं प्रक्रिया के हिस्से के रूप में imshow को कॉल करता हूं तो अंतिम आंकड़ा iPython नोटबुक में इनलाइन प्रदर्शित होता है, मैं इसे कैसे रोक सकता हूं?

मेरे कोड इस तरह दिखता है:

import matplotlib as plt 
fig = plt.pyplot.figure(figsize=(20,20)) 
im2 = plt.pyplot.imread('/some/dir/fancy-map.png') 

# Magic to calculate points, x_min etc. 

fig.clf() 
ax = fig.gca(xlim=(x_min, x_max), ylim=(y_min, y_max)) 
ax.imshow(im2, extent=(4, 4.5746, 42.5448, 43.3791), aspect=1.5) 
raster = ax.imshow(points, vmin = 0, vmax=maxval, extent=(x_min, x_max, y_min, y_max), aspect=1.5, origin='lower') 
fig.colorbar(raster) 
ax.set_title('coordinates plot') 

fig.savefig("fancy-annotated-map.png", bbox_inches=0) 

उत्तर

3

एक समारोह में इस ले जाने का प्रयास, और समारोह के शुरू में pylab.ioff() करते हैं और अंत वापसी पर pylab.ion() रहे हैं:

# Obvs add arguments so you can pass in your data and plot choices. 
def make_img(): 
    pylab.ioff() 

    import matplotlib as plt 
    fig = plt.pyplot.figure(figsize=(20,20)) 
    im2 = plt.pyplot.imread('/some/dir/fancy-map.png') 

    # Magic to calculate points, x_min etc. 

    fig.clf() 
    ax = fig.gca(xlim=(x_min, x_max), ylim=(y_min, y_max)) 
    ax.imshow(im2, extent=(4, 4.5746, 42.5448, 43.3791), aspect=1.5) 
    raster = ax.imshow(points, 
         vmin = 0, 
         vmax=maxval, 
         extent=(x_min, x_max, y_min, y_max), 
         aspect=1.5, 
         origin='lower') 
    fig.colorbar(raster) 
    ax.set_title('coordinates plot') 
    fig.savefig("fancy-annotated-map.png", bbox_inches=0) 

    pylab.ion() 
  1. यह मानता है कि आप केवल आईपीथॉन के भीतर फ़ंक्शन का उपयोग कर रहे हैं, या अन्यथा pylab हमेशा आयात किया जाता है। try ... except इसके आस-पास बेहतर लपेटें ताकि फ़ंक्शन का उपयोग कहीं और किया जा सके।

  2. the template for making your own IPython Magic functions पर एक नज़र (% या %% समारोह कॉल, %cpaste की तरह) है। इसके लिए एक अच्छा तरीका %imnoshow या कुछ ऐसा है जो imshow को आमंत्रित करता है, ताकि आप आउटपुट को देखे बिना imshow आउटपुट के इन-लाइन हैंडलिंग कर सकें। चूंकि आपका प्रश्न सामान्य साजिश इंटरफ़ेस से निपटता नहीं है, बल्कि यह विशिष्ट है, मैं इसे यहां लागू करने की कोशिश नहीं करूंगा, लेकिन उम्मीद है कि ऊपर दिया गया लिंक इतना होना चाहिए कि यदि आपको आवश्यकता हो तो आप कुछ लागू कर सकते हैं।

  3. एक और दृष्टिकोण अपनी खुद की IPython configuration environment की स्थापना, कुछ विशेष .py फ़ाइल अपने स्वयं के आयात और सहायक वर्ग परिभाषाओं, आदि से भरा होने तो फिर वहाँ अपने स्वयं के विशेष अंकन कार्यों जगह इतना है कि वे भरी हुई हैं शामिल करने के लिए निर्देशों का पालन करने के लिए है शुरूआत में और आईपीथन में वैश्विक दायरे में उपलब्ध हैं। मैं इसे कुछ कारणों से अत्यधिक अनुशंसा करता हूं: (ए) आप वास्तव में अपने स्वयं के सहायक कार्यों के लिए यूनिट परीक्षण लिख सकते हैं और यदि आप चाहें तो आईपीथॉन लॉन्च करते समय भी आसानी से परीक्षण किया जाता है! (बी) यह आपको अधिक आसानी से संस्करण नियंत्रण देता है और आपको आवश्यक सहायक कार्यों के तर्क को समाहित करता है। (सी) आपको इसे जादू कार्य करने या बाद में आयात करने की आवश्यकता के बिना "बस वहां जा रहे" फ़ंक्शन का लाभ मिलता है।

+0

बिल्कुल सही, धन्यवाद! सीधे 'pylab.ioff() 'का उपयोग करके समाप्त हो गया लेकिन निश्चित रूप से इसमें से एक iPython जादू कार्य करने में लगेगा – Robin

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