जवाबों:
वे सभी अलग-अलग चीजें करते हैं, क्योंकि matplotlib एक पदानुक्रमित क्रम का उपयोग करता है जिसमें एक आंकड़ा विंडो में एक आकृति होती है जिसमें कई अक्ष शामिल हो सकते हैं। इसके अतिरिक्त, pyplot इंटरफ़ेस से फ़ंक्शन हैं और Figure
वर्ग पर विधियां हैं । मैं नीचे दोनों मामलों पर चर्चा करूंगा।
pyplot
एक मॉड्यूल है जो कुछ कार्यों को इकट्ठा करता है जो मैटलपोटलिब को कार्यात्मक तरीके से उपयोग करने की अनुमति देता है। मैं यहां मानता हूं कि pyplot
जैसा आयात किया गया है import matplotlib.pyplot as plt
। इस मामले में, सामान हटाने वाली तीन अलग-अलग कमांड हैं:
plt.cla()
एक कुल्हाड़ी को साफ करता है , अर्थात वर्तमान आकृति में वर्तमान में सक्रिय कुल्हाड़ियों को। यह अन्य अक्षों को अछूता छोड़ देता है।
plt.clf()
अपने सभी अक्षों के साथ पूरे वर्तमान आंकड़े को साफ करता है , लेकिन खुली हुई खिड़की को छोड़ देता है, जैसे कि यह अन्य भूखंडों के लिए पुन: उपयोग किया जा सकता है।
plt.close()
एक विंडो बंद करता है , जो वर्तमान विंडो होगी, यदि अन्यथा निर्दिष्ट नहीं है।
कौन से कार्य आपके लिए सबसे उपयुक्त हैं यह आपके उपयोग-मामले पर निर्भर करता है।
close()
समारोह इसके अलावा एक जो खिड़की बंद किया जाना चाहिए निर्दिष्ट करने के लिए अनुमति देता है। तर्क या तो एक संख्या या एक विंडो को दिया नाम हो सकता है जब इसका उपयोग करके बनाया गया था figure(number_or_name)
या यह fig
प्राप्त किया गया एक आंकड़ा उदाहरण हो सकता है, जिसका उपयोग कर रहा है fig = figure()
। यदि कोई तर्क नहीं दिया जाता है close()
, तो वर्तमान में सक्रिय विंडो बंद हो जाएगी। इसके अलावा, सिंटैक्स है close('all')
, जो सभी आंकड़े बंद कर देता है।
इसके अतिरिक्त, Figure
वर्ग आंकड़े साफ करने के लिए तरीके प्रदान करता है। मैं निम्नलिखित में मान लूंगा कि fig
इसका एक उदाहरण है Figure
:
fig.clf()
पूरे आंकड़ा साफ करता है । यह कॉल plt.clf()
केवल fig
वर्तमान डेटा के बराबर है ।
fig.clear()
के लिए एक पर्याय है fig.clf()
ध्यान दें कि यहां तक कि del fig
संबद्ध आंकड़ा विंडो बंद नहीं होगी। जहां तक मुझे पता है कि एक आंकड़ा विंडो को बंद करने का एकमात्र तरीका plt.close(fig)
ऊपर वर्णित के रूप में उपयोग कर रहा है।
clear()
, मुझे cla()
केवल इस बात से ज्यादा फर्क नहीं देखा गया है कि केवल परजीवी कुल्हाड़ियों का ही cla()
इलाज किया जाता है।
clear()
मेरे matplotlib.pyplot
(MacOS पर संस्करण 1.4.2) में कोई फ़ंक्शन नहीं है । क्या आप मुझे संबंधित दस्तावेज पर निर्देशित कर सकते हैं?
बस एक चेतावनी है जिसे मैंने आज खोजा है। यदि आपके पास एक फ़ंक्शन है जो किसी भूखंड को बहुत बार कॉल कर रहा है तो आप किसी भी तरह से बेहतर उपयोग plt.close(fig)
करते हैं, fig.clf()
क्योंकि पहले मेमोरी में जमा नहीं होता है। संक्षेप में अगर स्मृति चिंता का विषय plt.close (अंजीर) है (हालांकि ऐसा लगता है कि बेहतर तरीके हैं, तो प्रासंगिक लिंक के लिए इस टिप्पणी के अंत में जाएं)।
तो निम्न स्क्रिप्ट एक खाली सूची का उत्पादन करेगी:
for i in range(5):
fig = plot_figure()
plt.close(fig)
# This returns a list with all figure numbers available
print(plt.get_fignums())
जबकि यह एक इस पर पांच आंकड़ों के साथ एक सूची का उत्पादन करेगा।
for i in range(5):
fig = plot_figure()
fig.clf()
# This returns a list with all figure numbers available
print(plt.get_fignums())
ऊपर दिए गए दस्तावेज़ से मुझे यह स्पष्ट नहीं है कि एक आंकड़ा बंद करने और एक खिड़की बंद करने के बीच क्या अंतर है। शायद यह स्पष्ट करेगा।
यदि आप एक पूरी स्क्रिप्ट की कोशिश करना चाहते हैं तो आपके पास है:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(1000)
y = np.sin(x)
for i in range(5):
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(x, y)
plt.close(fig)
print(plt.get_fignums())
for i in range(5):
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(x, y)
fig.clf()
print(plt.get_fignums())
यदि स्मृति चिंता का विषय है, तो किसी ने पहले से ही एसओ में एक काम के आसपास पोस्ट किया है: एक आंकड़ा बनाएं जिसे संदर्भ गिना जाता है
pyplot
एपीआई के तहत एकत्र नहीं होते हैं ।
plt.cla () का अर्थ है स्पष्ट वर्तमान अक्ष
plt.clf () का अर्थ है स्पष्ट वर्तमान आंकड़ा
इसके अलावा, वहाँ plt.gca () (करंट एक्सिस) और plt.gcf () (करंट फ़िगर प्राप्त करें)
यहाँ और पढ़ें: Matplotlib, Pyplot, Pylab आदि: इनमें से क्या अंतर है और प्रत्येक का उपयोग कब करना है?
close()
एक गैर-विशिष्ट कमांड है, मैं आंकड़ा बंद करने का एक तरीका ढूंढ रहा हूं (fig.close()
यह एक फ़ंक्शन नहीं है)। सही सिंटैक्स है:plt.close(fig)
।