Matplotlib에서 특정 서브플롯의 높이를 상대적 배치가 아닌 절대 좌표 기준으로 조정하려면 Axes() 클래스를 활용하는 것이 가장 직접적인 방법입니다. 일반적으로 사용하는 subplots()나 add_subplot()은 자동 배치에 적합하지만, 위치와 크기를 정밀하게 제어해야 할 때는 Axes() 클래스가 훨씬 유용합니다.
절대 좌표로 서브플롯 높이 조정하는 단계
- 그림(figure) 크기를 설정하고 서브플롯 사이 및 주변의 여백을 조정합니다.
- 새로운 그림을 생성하거나 기존 그림을 활성화합니다.
- 서브플롯의 절대 높이를 지정하기 위해 Axes() 클래스를 사용합니다.
add_axes()메서드로 그림에 축(axes)을 추가합니다.- 축 위에 데이터 포인트를 플롯합니다.
- 그림을 화면에 표시하려면 show() 메서드를 호출합니다.
Axes() 클래스는 [left, bottom, width, height] 형태의 리스트를 인자로 받으며, 각 값은 그림 전체 크기에 대한 비율(0~1 범위)로 표현됩니다. 이러한 방식 덕분에 서브플롯의 위치와 크기를 그림 크기에 고정된 비율로 절대적으로 지정할 수 있습니다.
예제 코드
from matplotlib import pyplot as pl pl.rcParams["figure.figsize"] = [7.50, 4.50] pl.rcParams["figure.autolayout"] = True figure = pl.figure() axes = pl.Axes(figure, [.4, .6, .25, .25]) figure.add_axes(axes) pl.plot([1, 2, 3, 4], [1, 2, 3, 4]) axes = pl.Axes(figure, [.4, .1, .25, .25]) figure.add_axes(axes) pl.plot([1, 2, 3, 4], [1, 2, 3, 4]) pl.show()
실행 결과
위 코드를 실행하면 두 개의 서브플롯이 모두 동일한 크기(.25 × .25)로 생성되며, 서로 다른 세로 위치(bottom = .6과 .1)에 절대적으로 배치되는 것을 확인할 수 있습니다. 이처럼 Axes() 클래스를 사용하면 서브플롯의 높이와 위치를 원하는 값으로 정확하게 고정할 수 있습니다.