আমি কীভাবে ম্যাটপ্লোটিলেবতে একাধিক সাব-প্লট পেতে পারি?


156

এই কোডটি কীভাবে কাজ করে সে সম্পর্কে আমি কিছুটা বিভ্রান্ত:

fig, axes = plt.subplots(nrows=2, ncols=2)
plt.show()

এই ক্ষেত্রে ডুমুর, অক্ষগুলি কীভাবে কাজ করে? এটার কাজ কি?

এছাড়াও কেন এই কাজটি একই কাজ করবে না:

fig = plt.figure()
axes = fig.subplots(nrows=2, ncols=2)

1
Matplotlib 2.1 হিসাবে দ্বিতীয় কোডটি কাজ করে
ফার্মি প্যারাডক্স

উত্তর:


210

এটা করতে বিভিন্ন উপায় আছে। subplotsপদ্ধতি subplots যে তারপর সংরক্ষিত হয় বরাবর চিত্রে সৃষ্টি axঅ্যারে। উদাহরণ স্বরূপ:

import matplotlib.pyplot as plt

x = range(10)
y = range(10)

fig, ax = plt.subplots(nrows=2, ncols=2)

for row in ax:
    for col in row:
        col.plot(x, y)

plt.show()

এখানে চিত্র বর্ণনা লিখুন

যাইহোক, এর মতো কিছু কাজ করবে, এটি এত "পরিষ্কার" নয় যদিও আপনি সাবপ্লট দিয়ে একটি চিত্র তৈরি করছেন এবং তারপরে তার উপরে যুক্ত করুন:

fig = plt.figure()

plt.subplot(2, 2, 1)
plt.plot(x, y)

plt.subplot(2, 2, 2)
plt.plot(x, y)

plt.subplot(2, 2, 3)
plt.plot(x, y)

plt.subplot(2, 2, 4)
plt.plot(x, y)

plt.show()

এখানে চিত্র বর্ণনা লিখুন


4
পরিবর্তে plot(x, y)আমার প্লটটি কোনও ব্যবহারকারী সংজ্ঞায়িত ফাংশন থেকে আসছে, যা নেটওয়ার্কেক্সএক্স সহ একটি গ্রাফ তৈরি করে। এটি কিভাবে ব্যবহার করতে?
সিগুর

ফর-লুপ ব্যতীত একাধিক সাবপ্লট উত্পাদন করা সম্ভব? যেমন পৃথক প্লটে একাধিক কলামের ডেটা প্লট করার জন্য কিছু ভেক্টরাইজড সমাধান? এটি আর জি-জিপ্ল্লটের সাথে খুব সহজ তবে পাইথনের সাথে এটি অসম্ভব বলে মনে হচ্ছে।
user2739472

3
আপনি দু'টিকে লুপের জন্য একে একে কমিয়ে ফেলতে পারেন axn = ax.flatten()এবং তারপরে for axes in axn: axes.plot(x,y)
19

@ ভ্যান্ডার 95 আপনাকে ধন্যবাদ এই উত্তরটি আপনার ব্যতীত কর = 1 বা সারি = 1 এর জন্য কাজ করে না
গুলজার

48
import matplotlib.pyplot as plt

fig, ax = plt.subplots(2, 2)

ax[0, 0].plot(range(10), 'r') #row=0, col=0
ax[1, 0].plot(range(10), 'b') #row=1, col=0
ax[0, 1].plot(range(10), 'g') #row=0, col=1
ax[1, 1].plot(range(10), 'k') #row=1, col=1
plt.show()

এখানে চিত্র বর্ণনা লিখুন


1
আমি যা পাই তা পাই ax, তবে কী তা নয় fig। তারা কি?
লিভো

3
কুড়াল আসলে একটি অদ্ভুত অ্যারে। ডুমুর হ'ল একটি matplotlib.figure.Figureশ্রেণি যার মাধ্যমে আপনি প্লট করা চিত্রটিতে অনেকগুলি হেরফের করতে পারেন। উদাহরণস্বরূপ, আপনি নির্দিষ্ট সাবপ্লোটে রঙ বার যুক্ত করতে পারেন, আপনি সমস্ত সাবপ্লটগুলির পিছনে পটভূমির রঙ পরিবর্তন করতে পারেন। আপনি এই সাবপ্লটগুলির বিন্যাস পরিবর্তন করতে পারেন বা সেগুলিতে একটি নতুন ছোট কুড়াল যুক্ত করতে পারেন। আপনি সম্ভবত সমস্ত সাবপ্লটগুলির জন্য একটি একক প্রধান শিরোনাম চাইবেন যা fig.suptitle(title)পদ্ধতির মাধ্যমে পাওয়া যেতে পারে । অবশেষে একবার আপনি প্লটের সাথে খুশি হন, আপনি fig.savefigপদ্ধতিটি ব্যবহার করে এটি সংরক্ষণ করতে পারেন । @ লিভো
খলিল আল হুটি

21
  • আপনি সাবপ্লট কলটিতে অক্ষগুলি আনপ্যাক করতে পারেন

  • এবং আপনি সাবপ্লটগুলির মধ্যে x এবং y অক্ষগুলি ভাগ করতে চান কিনা তা সেট করুন

এটার মত:

import matplotlib.pyplot as plt
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(nrows=2, ncols=2, sharex=True, sharey=True)
ax1.plot(range(10), 'r')
ax2.plot(range(10), 'b')
ax3.plot(range(10), 'g')
ax4.plot(range(10), 'k')
plt.show()

এখানে চিত্র বর্ণনা লিখুন


14

আপনার আগ্রহ থাকতে পারে যে ম্যাটপ্ল্লোব সংস্করণ ২.১ হিসাবে প্রশ্নটির দ্বিতীয় কোডটিও ঠিক কাজ করে।

থেকে পরিবর্তনের লগ :

চিত্র শ্রেণীর এখন সাবপ্লট পদ্ধতি রয়েছে চিত্র শ্রেণীর এখন একটি সাবপ্লট () পদ্ধতি রয়েছে যা পাইপ্লট.সুবপ্লটস () হিসাবে একই রকম আচরণ করে তবে একটি বিদ্যমান চিত্রের উপর।

উদাহরণ:

import matplotlib.pyplot as plt

fig = plt.figure()
axes = fig.subplots(nrows=2, ncols=2)

plt.show()

আমি পেয়েছি: অ্যাট্রিবিউটআরার ট্রেসব্যাক (সর্বশেষতম কলটি শেষ) <মডুল> () 2 3 ডুমুর = plt.figure () ----> 4 অক্ষ = ডুমুর.সুবপ্লটস (ন্যার = 2) <পিপথন-ইনপুট-168-ed25aa5255fa> , এনসিওএলস = 2) অ্যাট্রিবিউটআরার: 'ফিগার' অবজেক্টটির কোনও 'সাবপ্লট' নেই
লুডো শ্মিট

1
@ LuoSchmidt উত্তরে "ম্যাটপ্ল্লিটিব সংস্করণ ২.১ হিসাবে ..." বলা আছে
ImportanceOfBeingEnnest

11

ডকুমেন্টেশন পড়ুন: matplotlib.pyplot.subplots

pyplot.subplots()একটি টুপল ফেরত দেয় fig, axযা স্বরলিপি ব্যবহার করে দুটি ভেরিয়েবলে প্যাক করা হয়

fig, axes = plt.subplots(nrows=2, ncols=2)

কোড

fig = plt.figure()
axes = fig.subplots(nrows=2, ncols=2)

বস্তুটির সদস্য না হয়ে কাজ করে কারণ subplots()এটি কাজ করে না ।pyplotFigure

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