Matplotlib으로 여러 개의 서브플롯을 그릴 때, 이후에 특정 서브플롯을 다시 선택해서 추가로 조작해야 하는 경우가 자주 있습니다. 예를 들어 4개의 서브플롯 중 두 번째 플롯만 빨간색 선으로 다시 그리고 싶다면 add_subplot() 메서드를 활용하면 됩니다.
구현 단계
- 먼저 figure.figsize와 figure.autolayout rcParams를 설정하여 그림 크기와 서브플롯 사이의 여백을 조정합니다.
- plt.figure() 메서드를 사용해 새 figure를 생성하거나 기존 figure를 활성화합니다.
- 배치할 서브플롯 개수만큼 반복문을 돌며 각 위치에 Axes를 추가합니다.
- 반복 과정에서 fig.add_subplot() 메서드로 서브플롯 배열의 일부로 '~.axes.Axes' 객체를 figure에 추가합니다.
- 이제 원하는 위치의 축(axes)을 다시 선택한 뒤 빨간색 선으로 플롯을 그립니다.
- 마지막으로 plt.show() 메서드를 호출해 figure를 화면에 표시합니다.
예제 코드
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
fig = plt.figure()
# 1행 4열의 서브플롯 생성
for index in [1, 2, 3, 4]:
ax = fig.add_subplot(1, 4, index)
ax.plot(np.random.rand(5), np.random.rand(5))
# 두 번째 서브플롯을 다시 선택하여 빨간색으로 플롯
ax = fig.add_subplot(1, 4, 2)
ax.plot(np.random.rand(5), np.random.rand(5), color='red')
plt.show()실행 결과

핵심 포인트
위 코드에서 주목할 점은 동일한 인덱스(2번 위치)로 add_subplot()을 다시 호출하면 해당 위치의 기존 축이 새로 반환된다는 것입니다. 즉, 기존 플롯 위에 덮어쓰는 형태가 되어 두 번째 서브플롯만 빨간색 선으로 다시 그려지게 됩니다. 이처럼 add_subplot(행, 열, 위치) 패턴을 활용하면 반복문 없이도 원하는 서브플롯에 프로그래밍 방식으로 접근하고 수정할 수 있습니다.