উত্তর:
তারা সবাই আলাদা আলাদা কাজ করে, যেহেতু ম্যাটপ্লোটলিব হায়ারারিকিকাল ক্রম ব্যবহার করে যাতে কোনও চিত্র উইন্ডোতে এমন একটি চিত্র থাকে যা অনেকগুলি অক্ষের সমন্বয়ে থাকতে পারে। অতিরিক্তভাবে, পাইপ্লট ইন্টারফেস থেকে ফাংশন রয়েছে এবং 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(ম্যাকোজে 1.4.2 সংস্করণ) কোনও ফাংশন নেই । আপনি কি আমাকে সম্পর্কিত ডকুমেন্টেশনে পরিচালিত করতে পারেন?
clear()পদ্ধতি রয়েছে। Figure.clearসমতূল্য clfএবং Axes.clearসমতূল্য cla।
আমি আজ একটি আবিষ্কার করেছি যা আবিষ্কার করেছি। আপনার যদি এমন কোনও ফাংশন থাকে যা প্লটটিকে অনেক বার কল করে তবে আপনি কোনওভাবে প্রথমে স্মৃতিতে জমা না হয়ে plt.close(fig)বরং আরও ভাল ব্যবহার করেন use 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())
স্মৃতি যদি কোনও উদ্বেগের বিষয় হয়ে থাকে তবে ইতিমধ্যে কেউ SO তে একটি ওয়ার্ক-চারপাশে পোস্ট করেছেন দেখুন: রেফারেন্স গণনা করা হয়েছে এমন একটি চিত্র তৈরি করুন
pyplotএপিআইয়ের আওতায় আবর্জনা সংগ্রহ করে না ।
plt.cla () অর্থ বর্তমানের অক্ষটি পরিষ্কার করুন
plt.clf () এর অর্থ বর্তমানের চিত্র পরিষ্কার করুন clear
এছাড়াও, এখানে plt.gca () বর্তমান অক্ষ পাবেন) এবং plt.gcf () (বর্তমান চিত্রটি পান)
এখানে আরও পড়ুন: ম্যাটপ্ল্লোলিব, পাইপ্লট, পাইলাব ইত্যাদি: এগুলির মধ্যে পার্থক্য কী এবং কখন ব্যবহার করতে হবে?
close()একটি অ-নির্দিষ্ট কমান্ড, তাই আমি ফিগার ক্লোজার নির্দিষ্ট করার উপায় খুঁজছি (fig.close()কোনও ফাংশন নয়)। সঠিক বাক্য গঠন হল:plt.close(fig)।