Matplotlib의 contour() 메서드로 생성한 등고선 플롯(contour plot)에서 그려진 선의 (x, y) 좌표 값을 추출하려면 아래 단계를 따르면 됩니다.
- figure 크기를 설정하고 서브플롯 사이 및 주변의 패딩(padding)을 조정합니다.
- contour() 메서드를 사용하여 등고선 플롯을 생성합니다.
- 등고선 플롯의 컬렉션(
collections)에 접근한 뒤get_paths()메서드로 경로(path) 객체들을 가져옵니다. - show() 메서드를 호출하여 그림을 화면에 표시합니다.
예제 코드
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
m = [[3, 2, 1, 0], [2, 4, 1, 0], [2, 4, 1, 3], [4, 3, 1, 3]]
cs = plt.contour([3, 4, 2, 1], [5, 1, 2, 3], m)
p1 = cs.collections[0].get_paths()
for item in p1:
print(item.vertices)
plt.show()
코드 설명
먼저 rcParams를 사용해 그림 크기(7.50 × 3.50인치)와 자동 레이아웃 조정을 설정합니다. 이후 x, y 축 좌표 리스트와 4×4 크기의 데이터 행렬 m을 contour() 메서드에 전달하여 등고선 플롯을 만듭니다.
생성된 등고선 객체 cs의 collections[0]에 접근한 후 get_paths()를 호출하면, 해당 등고선 레벨에 포함된 모든 경로(Path) 객체 목록을 얻을 수 있습니다. 각 경로 객체는 vertices 속성을 통해 선을 구성하는 실제 (x, y) 좌표를 NumPy 배열 형태로 반환하므로, 반복문으로 각 경로의 정점 좌표를 손쉽게 출력할 수 있습니다.
참고: Matplotlib 3.8 버전부터 collections 접근 방식은 deprecated(사용 중단 예정) 상태입니다. 최신 버전에서는 cs.allsegs 또는 cs.get_paths()를 직접 활용하는 것이 권장됩니다.
출력 결과

코드를 실행하면 콘솔에 등고선을 구성하는 정점들의 (x, y) 좌표가 배열 형태로 출력되며, 동시에 해당 등고선 플롯이 화면에 표시됩니다.