답변:
이들은 단일 정수로 인코딩 된 서브 플롯 그리드 매개 변수입니다. 예를 들어 "111"은 "1x1 그리드, 첫 번째 서브 플롯"을 의미하고 "234"는 "2x3 그리드, 네 번째 서브 플롯"을 의미합니다.
의 대체 형식은 add_subplot(111)
입니다 add_subplot(1, 1, 1)
.
subplots()
방법 의 형태로 더 나은 대안이 있다는 것을 알아야합니다 .
나는 이것이 다음 그림에서 가장 잘 설명 될 것이라고 생각합니다.
위를 초기화하려면 다음을 입력하십시오.
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()
1.5.0
) Matlab에만있는 것 같습니다. ( matplotlib 에는이 동작을 수행하기위한 다른 옵션이 있습니다 (예 : gridspec ))
Constantin의 대답은 바로 자리에 있지만 더 많은 배경을 위해이 동작은 Matlab에서 상속됩니다.
Matlab 동작은 Matlab 문서 의 그림 설정-그림 당 여러 플롯 표시 섹션에 설명되어 있습니다.
subplot (m, n, i)는 Figure 창을 작은 하위 플롯의 mxn 행렬로 나누고 현재 플롯에 대한 하위 플롯을 선택합니다. 플롯은 그림 창의 맨 위 행을 따라 번호가 매겨진 다음 두 번째 행 등으로 번호가 지정됩니다.
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)
예
`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 () 방법은 여러 호출 서명이 있습니다 :
add_subplot(nrows, ncols, index, **kwargs)
add_subplot(pos, **kwargs)
add_subplot(ax)
add_subplot()
<-3.1.0부터호출 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()
당신이 함께 볼 수있는 좌변에 전화 (1) 그러나, 당신은 어떤 축 개체를 반환 할 수 있습니다 우변에 호출 2 ) 만 인덱스 = 9 렌더링 줄거리의 J), K까지 반환 할 수 있습니다, 및 L) 액세스이 호출을 사용하여.
pos는 3 자리 정수이며, 첫 번째 숫자는 행 수, 두 번째는 열 수, 세 번째는 서브 플롯의 인덱스입니다. 즉 fig.add_subplot (235)는 fig.add_subplot (2, 3, 5)와 동일합니다. 이 형식이 작동하려면 모든 정수가 10보다 작아야합니다 .
드문 경우지만 add_subplot은 현재 그림에서 이미 생성되었지만 그림의 축 목록에는없는 서브 플롯 축 인스턴스 인 단일 인수로 호출 될 수 있습니다.
위치 인수가 전달되지 않으면 기본값은 (1, 1, 1)입니다.
즉, fig.add_subplot(111)
질문 에서 전화 를 재생성합니다 .