Matplotlib में, अंजीर का क्या अर्थ है ।add_subplot (111)?


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 ग्रिड, 4th सबप्लोट"।

के लिए वैकल्पिक रूप add_subplot(111)है add_subplot(1, 1, 1)


18
क्या इस बारे में कोई विस्तृत दस्तावेज है? इस संदर्भ में 1x1 ग्रिड और 2x3 ग्रिड के बीच क्या अंतर है?
डोनाटेलो

19
1x1 ग्रिड = 1 पंक्ति, 1 कॉलम। 2x3 ग्रिड = 2 पंक्तियाँ, 3 कॉलम। तीसरी संख्या 1 से शुरू होती है और पहली पंक्ति में वृद्धि होती है। अधिक जानकारी के लिए सबप्लॉट () का प्रलेखन देखें।
क्रिश्चियन एलिस

18
जैसा कि दूसरों ने समझाया (दो साल से अधिक समय पहले), यह मटलब से एक विरासत है। लेकिन भविष्य के पाठकों के लिए, आपको पता होना चाहिए कि subplots()विधि के रूप में, एक बेहतर विकल्प मौजूद है ।
14

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 ग्राफ़ आदि का ग्रिड। (2,2,1) के लिए डिफॉल्ट मुझे लगता है कि मैं शायद उस आकार या अधिक को दोगुना करना चाहूंगा।
योशिसेरी

7
यह काफी मददगार है। यदि यह वर्ग (2x2) नहीं होता तो यह चित्र थोड़ा अच्छा होता, लेकिन अन्यथा बहुत उपयोगी होता।
ट्रैविसज

@TravisJ वाह, क्या संयोग है! आप लिखने से पहले एक घंटे के बारे में एक ही बात सोच रहा था! मैं इसे जल्द ही बदल
दूंगा

7
बहुत मददगार जवाब! हालांकि मुझे लगता है कि संपादन गलत है। 1: 2 या [1 3] जैसे कथनों के साथ उप-बिंदुओं को जोड़ने का व्यवहार Matplotlib (कम से कम नहीं 1.5.0) द्वारा समर्थित नहीं है , और केवल Matlab प्रतीत होता है। (ध्यान दें कि इस व्यवहार को प्राप्त करने के लिए माटप्लोटिब में अन्य विकल्प हैं, उदाहरण के लिए ग्रिडस्पेक )
प्रयोगशाला

39

कॉन्स्टेंटिन का जवाब हाजिर है, लेकिन अधिक पृष्ठभूमि के लिए यह व्यवहार मतलाब से विरासत में मिला है।

Matlab व्यवहार को चित्र सेटअप में समझाया गया है - Matlab प्रलेखन के चित्र खंड में कई भूखंडों को प्रदर्शित करना

सबप्लॉट (m, n, i) छोटे सबप्लॉट के m-by-n मैट्रिक्स में फिगर विंडो को तोड़ता है और वर्तमान प्लॉट के लिए ithe सबप्लॉट का चयन करता है। भूखंडों को आंकड़ा विंडो की शीर्ष पंक्ति के साथ गिना जाता है, फिर दूसरी पंक्ति, और इसके आगे।


2
यह मतलोपलिब है, मतलबी नहीं।
डोमे

45
मैटलोट्लिब का अधिकांश व्यवहार मतलाब से विरासत में मिला है। चूंकि मतलब प्रलेखन बेहतर था मैंने सोचा कि यह समझाने में मदद कर सकता है कि यह विशिष्ट फ़ंक्शन कॉल कैसे व्यवहार करता है। हां, आप सही हैं, यह (प्रश्न) मैटलोट्लिब के बारे में है। Matplotlib subplot प्रलेखन मेरी राय में कम स्पष्ट है।
डेवटीएम


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)

  • पंक्ति = पंक्तियों की संख्या
  • कॉलम = कॉलम की संख्या
  • स्थिति = उस ग्राफ की स्थिति जिसे आप प्लॉट कर रहे हैं

उदाहरण

`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 सबग्राफ प्लॉट किए जा सकते हैं। स्थान 2 है


2

Add_subplot () विधि के कई कॉल हस्ताक्षर होते हैं:

  1. add_subplot(nrows, ncols, index, **kwargs)
  2. add_subplot(pos, **kwargs)
  3. add_subplot(ax)
  4. add_subplot() <- 3.1.0 के बाद से

कॉल 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 रेंडर सबप्लॉट्स जे), के) और एल) को इस कॉल का उपयोग करके दुर्गम पर लौटा सकते हैं।

यानी यह प्रलेखन से इस बिंदु को दिखाता है :

पॉज़ एक तीन अंकों वाला पूर्णांक होता है, जहाँ पहला अंक पंक्तियों की संख्या, दूसरा कॉलमों की संख्या और तीसरा सबप्लॉट का सूचकांक होता है। यानी अंजीर .add_subplot (235) fig.add_subplot (2, 3, 5) के समान है। ध्यान दें कि इस फॉर्म के काम करने के लिए सभी पूर्णांक 10 से कम होने चाहिए


3 पर कॉल करें

दुर्लभ परिस्थितियों में, add_subplot को एक एकल तर्क के साथ कहा जा सकता है, एक सबप्लॉट कुल्हाड़ी का उदाहरण जो पहले से ही वर्तमान आकृति में बनाया गया था, लेकिन आंकड़े की कुल्हाड़ियों की सूची में नहीं।


4 कॉल करें (3.1.0 के बाद से):

यदि कोई स्थितिगत तर्क पारित नहीं किया जाता है, तो (1, 1, 1) के लिए चूक।

अर्थात, fig.add_subplot(111)प्रश्न में कॉल को पुन: प्रस्तुत करना ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.