Matplotlib-멀티 플롯
이 장에서는 동일한 캔버스에 여러 개의 서브 플롯을 만드는 방법을 배웁니다.
그만큼 subplot()함수는 주어진 그리드 위치에서 axes 객체를 반환합니다. 이 함수의 호출 서명은 다음과 같습니다.
plt.subplot(subplot(nrows, ncols, index)
현재 그림에서 함수는 ncolsaxes에 의한 nrows 그리드의 위치 인덱스에서 Axes 객체를 생성하고 반환합니다. 인덱스는 1에서 nrows * ncols로 이동하며 행 우선 순서로 증가합니다. Ifnrows, ncols 및 index는 모두 10보다 작습니다. 인덱스는 단일, 연결된, 3 자리 숫자로 제공 될 수도 있습니다.
예를 들어 subplot (2, 3, 3) 및 subplot (233)은 모두 현재 Figure의 오른쪽 상단 모서리에 Axes를 생성하여 Figure 높이의 절반과 Figure 너비의 1/3을 차지합니다.
서브 플롯을 생성하면 경계 공유를 넘어서 중첩되는 기존 서브 플롯이 삭제됩니다.
import matplotlib.pyplot as plt
# plot a line, implicitly creating a subplot(111)
plt.plot([1,2,3])
# now create a subplot which represents the top plot of a grid with 2 rows and 1 column.
#Since this subplot will overlap the first, the plot (and its axes) previously
created, will be removed
plt.subplot(211)
plt.plot(range(12))
plt.subplot(212, facecolor='y') # creates 2nd subplot with yellow background
plt.plot(range(12))
위의 코드 줄은 다음 출력을 생성합니다.
Figure 클래스의 add_subplot () 함수는 기존 플롯을 덮어 쓰지 않습니다.
import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot([1,2,3])
ax2 = fig.add_subplot(221, facecolor='y')
ax2.plot([1,2,3])
위의 코드 줄이 실행되면 다음과 같은 출력이 생성됩니다.
동일한 Figure 캔버스에 다른 axes 객체를 추가하여 동일한 Figure에 삽입 플롯을 추가 할 수 있습니다.
import matplotlib.pyplot as plt
import numpy as np
import math
x = np.arange(0, math.pi*2, 0.05)
fig=plt.figure()
axes1 = fig.add_axes([0.1, 0.1, 0.8, 0.8]) # main axes
axes2 = fig.add_axes([0.55, 0.55, 0.3, 0.3]) # inset axes
y = np.sin(x)
axes1.plot(x, y, 'b')
axes2.plot(x,np.cos(x),'r')
axes1.set_title('sine')
axes2.set_title("cosine")
plt.show()
위의 코드 줄을 실행하면 다음 출력이 생성됩니다.