Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Matplotlib에서 서브플롯 높이를 절대 좌표 기준으로 조정하는 방법

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() 클래스를 사용하면 서브플롯의 높이와 위치를 원하는 값으로 정확하게 고정할 수 있습니다.