programing

그림.add_subplot(111)에서 인수는 무엇을 의미합니까?

yellowcard 2023. 4. 20. 20:44
반응형

그림.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()심술궂은가요?

다음 사진으로 설명하는 것이 가장 좋을 것 같습니다.

여기에 이미지 설명 입력

위의 내용을 초기화하려면 다음과 같이 입력합니다.

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

이는 단일 정수로 인코딩된 하위구 그리드 매개변수입니다.예를 들어, "111"은 "1x1 그리드, 첫 번째 하위구"를 의미하고 "234"는 "2x3 그리드, 네 번째 하위구"를 의미합니다.

대체 양식:add_subplot(111)add_subplot(1, 1, 1).

Constantin의 답변은 정확하지만 더 많은 배경을 위해 이 동작은 Matlab에서 상속됩니다.

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

하위구(m,n,i)는 그림 창을 작은 하위구의 m-by-n 행렬로 나누고 현재 그림에 대한 하위구를 선택합니다.그림 창의 맨 위 행에 따라 플롯에 번호가 매겨진 다음 두 번째 행에 번호가 매겨집니다.

저의 해결책은

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

2x2 그리드 (1과 3의 결합)

여기에 이미지 설명 입력

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개의 숫자(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()

서브플롯

LHS의 call 1에서는 임의의 축 객체를 반환할 수 있지만 RHS의 call 2에서는 이 콜을 사용하여 index =9 렌더링 서브플롯 j), k) 및 l)까지만 반환할 수 있습니다.

즉, 매뉴얼에서 이 을 설명하고 있습니다.

pos는 세 자리 정수입니다.첫 번째 자리는 행의 수, 두 번째 자리는 열 수, 세 번째 자리는 하위구의 색인입니다. 즉, 그림.add_subplot(235)는 그림.add_subplot(2, 3, 5)과 동일합니다.이 형식이 작동하려면 모든 정수가 10보다 작아야 합니다.


콜 3

드문 경우이지만 add_subplot은 단일 인수를 사용하여 호출될 수 있습니다. 이 경우 하위구 축 인스턴스는 현재 그림에서 이미 생성되었지만 그림의 축 리스트에는 생성되지 않았습니다.


Call 4 (3.1.0 이후):

positional 인수가 전달되지 않은 경우 기본값은 (1, 1, 1)입니다.

, 콜의 재생.fig.add_subplot(111)으로 x 그리드를 의 첫 유일한) 축합니다.기본적으로 1 x 1의 서브플롯 그리드를 설정하고 그리드의 첫 번째(및 유일한) 축 객체를 반환합니다.

fig.add_subplot(111) 닮다fig.add_subplot(1, 1, 1) , . . . . . . . .111는 하위구 그리드 파라미터에 불과하지만 단일 정수로 인코딩됩니다.

n*m 그리드에서 k번째 하위구를 선택하려면 다음을 수행합니다.fig.add_subplot(n, m, k).

언급URL : https://stackoverflow.com/questions/3584805/what-does-the-argument-mean-in-fig-add-subplot111

반응형