ম্যাটপ্ল্লোব-এ, আর্গুমেন্টের অর্থ ডুমুর মধ্যে কী বোঝায়?


472

কখনও কখনও আমি যেমন কোড জুড়ে আসে:

import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
fig = plt.figure()
fig.add_subplot(111)
plt.scatter(x, y)
plt.show()

যা উত্পাদন করে:

অন্তর্ভুক্ত কোড দ্বারা উত্পাদিত উদাহরণ প্লট

আমি পাগলের মতো ডকুমেন্টেশন পড়ছি তবে এর জন্য কোনও ব্যাখ্যা খুঁজে পাচ্ছি না 111। কখনও কখনও আমি একটি দেখতে 212

যুক্তি fig.add_subplot()মানে কি?

উত্তর:


470

এগুলি একক পূর্ণসংখ্যা হিসাবে এনকোড করা সাবপ্লট গ্রিড পরামিতি। উদাহরণস্বরূপ, "111" এর অর্থ "1x1 গ্রিড, প্রথম সাবপ্লট" এবং "234" এর অর্থ "2x3 গ্রিড, চতুর্থ সাবপ্লট"।

এর জন্য বিকল্প ফর্ম add_subplot(111)হয় add_subplot(1, 1, 1)


18
এ সম্পর্কে কোন বিস্তারিত দলিল আছে? এই প্রসঙ্গে 1x1 গ্রিড এবং 2x3 গ্রিডের মধ্যে পার্থক্য কী?
দোনেটেলো

19
1x1 গ্রিড = 1 সারি, 1 কলাম। 2x3 গ্রিড = 2 সারি, 3 কলাম। তৃতীয় সংখ্যাটি 1 থেকে শুরু হয় এবং প্রথম সারিতে বর্ধিত হয়। আরও তথ্যের জন্য সাবপ্লট () এর ডকুমেন্টেশন দেখুন।
খ্রিস্টান অ্যালিস

18
অন্যরা যেমন ব্যাখ্যা করেছেন (দুই বছরেরও বেশি আগে), এটি মতলব থেকে প্রাপ্ত একটি উত্তরাধিকার। তবে ভবিষ্যতের পাঠকদের জন্য, আপনার জানা উচিত যে subplots()পদ্ধতিটির আকারে আরও ভাল বিকল্প রয়েছে ।
জারনডেল

26
উত্তরাধিকার ডকুমেন্টেশন subplot()হয় এখানে এবং subplots()হয় এখানে
ক্রাইজিউল্ফ

511

আমি মনে করি এটি নীচের ছবি দ্বারা সর্বোত্তমভাবে ব্যাখ্যা করা হবে:

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

উপরেরটি আরম্ভ করার জন্য, একটি টাইপ করতে হবে:

import matplotlib.pyplot as plt
fig = plt.figure()
fig.add_subplot(221)   #top left
fig.add_subplot(222)   #top right
fig.add_subplot(223)   #bottom left
fig.add_subplot(224)   #bottom right 
plt.show()

19
আমি মনে করি যে কমা সহ সংস্করণটি 3-সংখ্যার সংখ্যার সংস্করণটির চেয়ে অনেক বেশি স্বজ্ঞাত এবং পাঠযোগ্য
এন্ডোলিথ

এটি দুর্দান্ত এটি দেখায় যে "গ্রিডে সাবপ্লটগুলি অবস্থান" কীভাবে উপরের চিত্রিত উদাহরণের মতো 2x2 গ্রিড বা 4x4 গ্রাফের গ্রিড ইত্যাদি হতে পারে তবে কেউ দয়া করে ব্যাখ্যা করতে পারেন যে প্রদর্শিত হওয়া গ্রাফগুলির আকার নির্ধারণ করে কি তা ব্যাখ্যা করতে পারে। (২,২,১) এর ডিফল্টগুলি আমার কাছে খুব ছোট মনে হয় আমি এটির চেয়ে দ্বিগুণ বা তার বেশি দ্বিগুণ চাই।
yoshiserry

7
এটি বেশ সহায়ক। এই ছবিটি কিছুটা ভাল লাগবে যদি এটি স্কোয়ার (2x2) না হয় তবে অন্যথায় খুব সহায়ক helpful
ট্র্যাভিসজে

@ ট্রাভিসজে বাহ, কাকতালীয় ঘটনা! আপনি লেখার এক ঘন্টা আগে আমি ঠিক একই জিনিসটি ভাবছিলাম! আমি শীঘ্রই এটি পরিবর্তন করব :)
সাইয়ানগার্ল

7
খুব সহায়ক উত্তর! যদিও আমি মনে করি সম্পাদনাটি সঠিক নয়। 1: 2 বা [1 3] এর মত বিবৃতি সহ সাব-প্লটগুলিতে স্প্যান করার আচরণটি ম্যাটপ্ল্লোলিব (অন্তত অন্তত নয় 1.5.0) দ্বারা সমর্থিত নয় এবং এটি কেবল মতলব বলে মনে হয়। (দ্রষ্টব্য এই আচরণটি অর্জনের জন্য ম্যাটপ্লটলিবের অন্যান্য বিকল্প রয়েছে, যেমন গ্রিডস্পেক )
ল্যাব

39

কনস্ট্যান্টিনের উত্তর স্পষ্ট তবে আরও পটভূমির জন্য এই আচরণটি মাতলাব থেকে উত্তরাধিকার সূত্রে প্রাপ্ত।

মতলব আচরণটি চিত্র সেটআপে ব্যাখ্যা করা হয়েছে - মতলব ডকুমেন্টেশনের চিত্র বিভাগে একাধিক প্লট প্রদর্শন করা হচ্ছে।

সাবপ্লট (মি, এন, আই) চিত্রের উইন্ডোটিকে ছোট ছোট সাবপ্লটগুলির একটি এম-বাই-এন ম্যাট্রিক্সে ভেঙে দেয় এবং বর্তমান প্লটের জন্য এটি সাবপ্লট নির্বাচন করে। প্লটগুলি চিত্র উইন্ডোর উপরের সারি বরাবর, তারপর দ্বিতীয় সারিতে এবং আরও কিছু সংখ্যক গণনা করা হবে।


2
এটি ম্যাটপ্লটলিব, মাতলাব নয়।
ডোম

45
বেশিরভাগ ম্যাটপ্ল্লিটব আচরণ মাতলাব থেকে উত্তরাধিকার সূত্রে প্রাপ্ত। যেহেতু মতলব ডকুমেন্টেশন ভাল ছিল আমি ভেবেছিলাম যে এটি নির্দিষ্ট ফাংশন কলটি কীভাবে আচরণ করে তা বোঝাতে সহায়তা করে। হ্যাঁ, আপনার সঠিক, এটি (প্রশ্ন) ম্যাটপ্লটলিব সম্পর্কিত। Matplotlib উপকাহিনী ডকুমেন্টেশন আমার মতে কম স্পষ্ট।
ডেভটিএম

7
ম্যাটল্যাব ডকুমেন্টেশন সরানো হয়েছে
ডটানকোহেন

20

আমার সমাধানটি হ'ল

fig = plt.figure()
fig.add_subplot(1, 2, 1)   #top and bottom left
fig.add_subplot(2, 2, 2)   #top right
fig.add_subplot(2, 2, 4)   #bottom right 
plt.show()

1 এবং 3 একত্রিত করে 2x2 গ্রিড


15

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

import matplotlib.pyplot as plt
plt.figure(figsize=(8,8))
plt.subplot(3,2,1)
plt.subplot(3,2,3)
plt.subplot(3,2,5)
plt.subplot(2,2,2)
plt.subplot(2,2,4)

প্রথম কোডটি 3 সারি এবং 2 কলামযুক্ত লেআউটে প্রথম সাবপ্লট তৈরি করে।

প্রথম কলামে তিনটি গ্রাফ 3 টি সারি বোঝায়। দ্বিতীয় প্লট একই কলামে প্রথম প্লটের ঠিক নীচে আসে।

শেষের দুটি প্লটের যুক্তি রয়েছে (2, 2)যা বোঝায় যে দ্বিতীয় কলামটিতে কেবল দুটি সারি রয়েছে, পরামিতি পরামিতি সারি অনুসারে সরানো।


10

fig.add_subplot(ROW,COLUMN,POSITION)

  • ROW = সারি সংখ্যা
  • COLUMN = কলামের সংখ্যা
  • পজিশন = আপনি যে গ্রাফটি বানাচ্ছেন তার অবস্থান

উদাহরণ

`fig.add_subplot(111)` #There is only one subplot or graph  
`fig.add_subplot(211)`  *and*  `fig.add_subplot(212)` 

মোট 2 টি সারি রয়েছে, 1 টি কলাম সুতরাং 2 টি অনুচ্ছেদ প্লট করা যেতে পারে। এর অবস্থান 1 ম। মোট 2 টি সারি রয়েছে, 1 টি কলাম সুতরাং 2 টি অনুচ্ছেদ প্লট করা যেতে পারে tsএর অবস্থানটি ২ য়


2

Add_subplot () পদ্ধতি বিভিন্ন কল স্বাক্ষর রয়েছে:

  1. add_subplot(nrows, ncols, index, **kwargs)
  2. add_subplot(pos, **kwargs)
  3. add_subplot(ax)
  4. add_subplot() <- ৩.১.০ থেকে

1 এবং 2 কল:

1 এবং 2 কলগুলি একে অপরের মতো একই জিনিস অর্জন করে (নীচে বর্ণিত একটি সীমা পর্যন্ত)। তাদের প্রথম 2 নম্বর (2x2, 1x8, 3x4, ইত্যাদি) সহ গ্রিড বিন্যাস নির্দিষ্ট করে হিসাবে মনে করুন , যেমন:

f.add_subplot(3,4,1) 
# is equivalent to:
f.add_subplot(341)

উভয়ই 3 টি সারি এবং 4 কলামে (3 x 4 = 12) সাবপ্লটগুলির সাবপ্লল্ট বিন্যাস উত্পাদন করে। তৃতীয় সংখ্যা প্রতিটি কলে ইঙ্গিত যা রিটার্ন বস্তুর অক্ষ, থেকে শুরু উপরের বামদিকের 1, ডানদিকে বৃদ্ধি

এই কোডটি কল 2 ব্যবহারের সীমাবদ্ধতার চিত্র তুলে ধরেছে:

#!/usr/bin/env python3
import matplotlib.pyplot as plt

def plot_and_text(axis, text):
  '''Simple function to add a straight line
  and text to an axis object'''
  axis.plot([0,1],[0,1])
  axis.text(0.02, 0.9, text)

f = plt.figure()
f2 = plt.figure()

_max = 12
for i in range(_max):
  axis = f.add_subplot(3,4,i+1, fc=(0,0,0,i/(_max*2)), xticks=[], yticks=[])
  plot_and_text(axis,chr(i+97) + ') ' + '3,4,' +str(i+1))

  # If this check isn't in place, a 
  # ValueError: num must be 1 <= num <= 15, not 0 is raised
  if i < 9:
    axis = f2.add_subplot(341+i, fc=(0,0,0,i/(_max*2)), xticks=[], yticks=[])
    plot_and_text(axis,chr(i+97) + ') ' + str(341+i))

f.tight_layout()
f2.tight_layout()
plt.show()

subplots

আপনি এলএইচএসে কল করুন 1 দিয়ে দেখতে পারবেন যে কোনও অক্ষের অবজেক্টটি আপনি ফিরে আসতে পারবেন, তবে আরএইচএসে কল 2 এর মাধ্যমে আপনি কেবল সূচক = 9 রেন্ডারিং সাবপ্লট জে), কে) এবং এল) এই কলটি ব্যবহার করে অ্যাক্সেসযোগ্য ফিরে আসতে পারেন।

এটি ডকুমেন্টেশন থেকে এই পয়েন্টটি চিত্রিত করে :

পোস একটি তিন অঙ্কের পূর্ণসংখ্যার যেখানে প্রথম সংখ্যাটি সারিগুলির সংখ্যা, দ্বিতীয় স্তম্ভের সংখ্যা এবং তৃতীয় সাবপ্লটটির সূচক। যেমন: fig.add_subplot (235) ডুমুর.এইডি_সুবপ্লোট (2, 3, 5) এর সমান। মনে রাখবেন যে এই ফর্মটি কাজ করার জন্য সমস্ত পূর্ণসংখ্যার 10 এর কম হওয়া উচিত


কল 3

বিরল পরিস্থিতিতে, add_subplot একটি একক যুক্তির সাথে ডাকা যেতে পারে, একটি সাবপ্লট অক্ষ অক্ষর ইতিমধ্যে উপস্থিত চিত্রে তৈরি হয়েছে তবে চিত্রের অক্ষের তালিকায় নয়।


কল 4 (3.1.0 থেকে):

যদি কোনও স্থিতি যুক্তি পাস না হয় তবে ডিফল্ট (1, 1, 1)।

অর্থাত, fig.add_subplot(111)প্রশ্নটিতে কল পুনরুত্পাদন ।

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