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

Matplotlib 지도에 축척 막대(스케일 바) 삽입하는 방법


matplotlib으로 만든 지도나 이미지에 축척 막대(scale bar)를 삽입하려면 AnchoredSizeBar() 클래스를 사용해 스케일 바 객체를 생성한 뒤, 이를 현재 축에 추가하면 됩니다.

구현 단계

  • 그림(figure) 크기를 설정하고 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.

  • numpy를 사용해 무작위(random) 데이터를 생성합니다.

  • imshow() 메서드를 사용해 데이터를 2D 래스터 이미지 형태로 화면에 표시합니다.

  • gca() 메서드로 현재 축(axis) 객체를 가져옵니다.

  • 막대 아래쪽에 중앙 정렬된 레이블이 붙은 수평 방향의 축척 막대를 생성합니다.

  • add_artist() 메서드로 현재 축에 스케일 바 아티스트를 추가합니다.

  • 축 눈금과 테두리를 숨기기 위해 축을 비활성화합니다.

  • show() 메서드를 호출해 최종 그림을 화면에 출력합니다.

예제 코드

from matplotlib import pyplot as plt
from mpl_toolkits.axes_grid1.anchored_artists import AnchoredSizeBar
import numpy as np

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

data = np.random.rand(5, 5)

img = plt.imshow(data, cmap="YlGnBu")
ax = plt.gca()
scalebar = AnchoredSizeBar(ax.transData, 1, "1 Meter", 9)

ax.add_artist(scalebar)
ax.axis('off')
plt.show()

코드 설명

AnchoredSizeBar()의 주요 인자는 다음과 같습니다.

  • ax.transData: 데이터 좌표계를 기준으로 막대 길이를 계산하기 위한 변환(transform) 객체입니다.

  • 1: 축척 막대가 나타낼 실제 데이터 단위의 길이입니다.

  • "1 Meter": 막대 아래에 표시될 레이블 문자열입니다.

  • 9: 막대가 배치될 위치를 나타내는 코드로, 범례(loc)와 동일한 방식으로 지정합니다.

실행 결과

위 코드를 실행하면 5x5 크기의 무작위 데이터가 'YlGnBu' 컬러맵으로 표현된 지도 이미지와 함께, "1 Meter"라는 레이블이 달린 축척 막대가 화면에 나타납니다. 축을 비활성화했기 때문에 깔끔한 지도 형태의 결과물을 얻을 수 있습니다.

Matplotlib 지도에 축척 막대(스케일 바) 삽입하는 방법