[python] Matplotlib에서, 인수가 fig.add_subplot (111)의 의미는 무엇입니까?

때로는 다음과 같은 코드가 나타납니다.

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()의미 하는가?



답변

이들은 단일 정수로 인코딩 된 서브 플롯 그리드 매개 변수입니다. 예를 들어 “111”은 “1×1 그리드, 첫 번째 서브 플롯”을 의미하고 “234”는 “2×3 그리드, 네 번째 서브 플롯”을 의미합니다.

의 대체 형식은 add_subplot(111)입니다 add_subplot(1, 1, 1).


답변

나는 이것이 다음 그림에서 가장 잘 설명 될 것이라고 생각합니다.

여기에 이미지 설명을 입력하십시오

위를 초기화하려면 다음을 입력하십시오.

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()


답변

Constantin의 대답은 바로 자리에 있지만 더 많은 배경을 위해이 동작은 Matlab에서 상속됩니다.

Matlab 동작은 Matlab 문서 의 그림 설정-그림 당 여러 플롯 표시 섹션에 설명되어 있습니다.

subplot (m, n, i)는 Figure 창을 작은 하위 플롯의 mxn 행렬로 나누고 현재 플롯에 대한 하위 플롯을 선택합니다. 플롯은 그림 창의 맨 위 행을 따라 번호가 매겨진 다음 두 번째 행 등으로 번호가 지정됩니다.


답변

내 해결책은

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 그리드


답변

여기에 이미지 설명을 입력하십시오

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 개의 열이있는 레이아웃에서 첫 번째 서브 플롯을 만듭니다.

첫 번째 열에있는 세 개의 그래프는 세 개의 행을 나타냅니다. 두 번째 플롯은 같은 열의 첫 번째 플롯 바로 아래에옵니다.

마지막 두 플롯에는 두 (2, 2)번째 열에 두 개의 행만 있고 위치 매개 변수는 행 단위로 이동한다는 것을 나타내는 인수 가 있습니다.


답변

fig.add_subplot(ROW,COLUMN,POSITION)

  • 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 개의 하위 그래프를 그릴 수 있습니다.


답변

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 개의 숫자 (2×2, 1×8, 3×4 등)로 그리드 레이아웃을 지정하는 것으로 생각하십시오 . 예 :

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()

서브 플로트

당신이 함께 볼 수있는 좌변에 전화 (1) 그러나, 당신은 어떤 축 개체를 반환 할 수 있습니다 우변에 호출 2 ) 만 인덱스 = 9 렌더링 줄거리의 J), K까지 반환 할 수 있습니다, 및 L) 액세스이 호출을 사용하여.

, 설명서 에서이 점 을 보여줍니다.

pos는 3 자리 정수이며, 첫 번째 숫자는 행 수, 두 번째는 열 수, 세 번째는 서브 플롯의 인덱스입니다. 즉 fig.add_subplot (235)는 fig.add_subplot (2, 3, 5)와 동일합니다. 이 형식이 작동하려면 모든 정수가 10보다 작아야합니다 .


전화 3

드문 경우지만 add_subplot은 현재 그림에서 이미 생성되었지만 그림의 축 목록에는없는 서브 플롯 축 인스턴스 인 단일 인수로 호출 될 수 있습니다.


전화 4 (3.1.0부터) :

위치 인수가 전달되지 않으면 기본값은 (1, 1, 1)입니다.

즉, fig.add_subplot(111)질문 에서 전화 를 재생성합니다 .