আমি ম্যাটপ্ল্লিটিবকে কীভাবে বলব যে আমি একটি প্লট তৈরি করেছি?


165

নিম্নলিখিত কোড দুটি পোস্টস্ক্রিপ্ট (.ps) ফাইল প্লট করে, কিন্তু দ্বিতীয়টিতে দুটি লাইন থাকে।

import matplotlib
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab

plt.subplot(111)
x = [1,10]
y = [30, 1000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("first.ps")


plt.subplot(111)
x = [10,100]
y = [10, 10000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("second.ps")

দ্বিতীয় প্লটের জন্য নতুনভাবে শুরু করতে আমি কীভাবে ম্যাটপ্লটলিবকে বলতে পারি?


3
স্টাইলের পয়েন্ট হিসাবে, যখন আপনার কাছে প্রতি চিত্রের জন্য কেবল একটি প্লট থাকবে তখন সাবপ্লট ব্যবহার করার দরকার নেই।
অটোপেক্টিক

উত্তর:


123

আপনি figureএকটি নতুন প্লট তৈরি করতে ব্যবহার করতে পারেন , উদাহরণস্বরূপ, বা closeপ্রথম প্লটের পরে ব্যবহার করতে পারেন ।


19
পাইপ্লট টিউটোরিয়ালটি "একাধিক চিত্র" বিভাগে সিএলএফ () উল্লেখ করে। মনে রাখবেন যে আপনি যদি পুরানোটিকে বন্ধ () দিয়ে বন্ধ না করেই চিত্র () দিয়ে একটি নতুন প্লট তৈরি করেন (এমনকি আপনি জিইউআই উইন্ডোটি বন্ধ করে দেন) তবে পাইপলট আপনার পুরানো চিত্রটির একটি রেফারেন্স ধরে রাখে, এটি মেমরি ফাঁসের মতো দেখতে পারে।
জৌনি কে। সেপ্পেনেন

5
আপনি সমস্ত পুরানো পরিসংখ্যান সরাতে plt.close () / pylab.close () ব্যবহার করতে পারেন
Calvin1602

1
প্রথম চক্রান্ত পরে, আপনি কি মানে plt.savefig("first.ps")?
সিগুর

@ জৌনি.কি.স্যাপ্পেনেন আপনার মন্তব্যটি যুক্ত করার জন্য, পাইথন আপনাকে ডিফল্টরূপে সতর্ক করে দেবে যদি আপনি অনেকগুলি চিত্র খোলেন: "রানটাইম ওয়ার্নিং: 20 এরও বেশি পরিসংখ্যান খোলা হয়েছে"।
আরপিএফ

173

একটি পরিষ্কার চিত্র আদেশ আছে, এবং এটি আপনার জন্য করা উচিত:

plt.clf()

আপনার যদি একই চিত্রটিতে একাধিক সাবপ্লট থাকে

plt.cla()

বর্তমান অক্ষগুলি সাফ করে।


1
ধন্যবাদ! আপনি যদি পিডিএফ ব্যাকএন্ড ব্যবহার করেন (যা আপনাকে একাধিক প্লট সংরক্ষণ করতে দেয়) আপনি প্রতিটি কল করার পরে এই কলটি করতে হবে plt.save ()
বেন

4
আমার ক্ষেত্রে, plt.clf () চিত্রটি সাফ করার জন্য যথেষ্ট ছিল তবে মেমরি ফাঁস বন্ধে অপর্যাপ্ত, তবে প্রথমে কল করে plt.close () মেমরি ফাঁস বন্ধ করে দিয়েছে। পাইথন ২.7, ম্যাটপ্ল্লোলিব 1.1.1rc1 (উবুন্টু 12.04)। অবগতির জন্য।
ডিজেডাফ

29

ডেভিড কর্নিপাউ থেকে বর্ণিত হিসাবে, চিত্র () ব্যবহার করুন।

import matplotlib
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab

plt.figure()
x = [1,10]
y = [30, 1000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("first.ps")


plt.figure()
x = [10,100]
y = [10, 10000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("second.ps")

বা একই প্লটের জন্য সাবপ্লট (121) / সাবপ্লট (122), আলাদা অবস্থান।

import matplotlib
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab

plt.subplot(121)
x = [1,10]
y = [30, 1000]
plt.loglog(x, y, basex=10, basey=10, ls="-")

plt.subplot(122)
x = [10,100]
y = [10, 10000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("second.ps")

3
আপনি এখনও ব্যবহার করা উচিত plt.clf()পরিসংখ্যান মেমরির অনুষ্ঠিত হয় যতক্ষণ না স্পষ্টভাবে বন্ধ
kaveish

13

plt.hold(False)প্রথম plt.plot এর আগে কেবল প্রবেশ করুন এবং আপনি আপনার মূল কোডটিতে আটকে থাকতে পারেন।


6
matplotlib == ২.০.২ এ, আমি এই বার্তাটি পেয়েছি: ম্যাটপ্ল্লিটিবড্রিপেকশনস সতর্কতা: পাইপ্লট.হোল্ডটি হ্রাস করা হয়েছে।
জোনাথন

12

আপনি যদি ম্যাটপ্লটলিব ইন্টারেক্টিভভাবে ব্যবহার করছেন, উদাহরণস্বরূপ কোনও ওয়েব অ্যাপ্লিকেশনটিতে, (যেমন আইপিথন) আপনি সম্ভবত খুঁজছেন

plt.show()

পরিবর্তে plt.close()বা plt.clf()


আমার সবেমাত্র আমাকে হারাতে হবে না এমন একগুচ্ছ সময় আপনি আমাকে বাঁচিয়েছিলেন
'11 এ 11:42

1

তাদের মধ্যে যদি কেউ কাজ না করে থাকে তবে এটি পরীক্ষা করে দেখুন .. যদি আপনার নিজের অক্ষের সাথে ডেটাতে এক্স এবং ওয়াই অ্যারে রয়েছে তা বলুন। তারপরে আপনি কোন x (yupyter) টি x এবং y খালি শুরু করেছেন তা পরীক্ষা করে দেখুন। এটি কারণ, সম্ভবত আপনি x এবং y এ পুনরায় আরম্ভ না করে ডেটা যুক্ত করছেন। প্লটের পুরানো ডেটাও রয়েছে। সুতরাং এটি পরীক্ষা করে দেখুন ..

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.