Python/Utils

파이썬 지도 시각화 모듈 Pygmt 튜토리얼 예제

jimmy_AI 2022. 12. 16. 22:55
반응형

Python Map Visualization : Pygmt

파이썬에서 실제 지도에 시각화를 진행할 수 있는 유용한 모듈인

Pygmt에 대하여 설치 및 간단한 사용법에 관한 예제를 다루어보도록 하겠습니다.

 

참고로, 해당 포스팅은 아래 링크의 Pygmt 튜토리얼을 참조하여 작성했습니다.

 

Anatomy of a PyGMT figure — Crafting beautiful maps with PyGMT

.ipynb .pdf to have style consistency -->

www.generic-mapping-tools.org

 

 

Pygmt 설치 방법

Pygmt 모듈은 단순히 pip으로 설치 시에는 경로 관련 오류가 발생할 수 있어,

아래의 명령어로 conda 가상환경을 만든 이후에 import를 해주셔야 합니다.

# 가상환경 만들기
conda create --name pygmt --channel conda-forge pygmt

# 만든 가상환경 활성화
conda activate pygmt

 

 

지도 범위 설정

지도의 범위는 기본적으로 경도와 위도를 기준으로 진행됩니다.

아래는 한반도가 나타나도록 지도를 설정하여 그린 예시 코드입니다.

import pygmt

# 경도 122 ~ 130도, 위도 30 ~ 43도 범위 설정
region = [122, 130, 30, 43]

fig = pygmt.Figure() # 지도를 그릴 객체 설정
fig.coast(region=region, shorelines=True) # 범위 및 해안선 그리기
fig.show() # 화면에 출력

 

 

 

지도 색상 테마 설정

이번에는 위에서 그린 지도에 바다 및 육지의 색상을 입혀보도록 하겠습니다.

coast 메소드에 water, land 인자를 아래와 같이 추가로 지정해주면 됩니다.

fig.coast(region=region, water="lightblue", land="lightgreen", shorelines = True)
fig.show()

 

반응형

 

지도 격자 설정

위도/경도에 맞추어 격자를 설정하는 기능도 지원합니다.

basemap 메소드를 활용하면 되는데, 간단한 예시 코드 실행 결과는 다음과 같습니다.

fig.basemap(frame="a")
fig.show()

 

 

fig.basemap(frame="afg")
fig.show()

 

 

지도 상에 산점도 시각화 예시

다음과 같은 간단한 데이터셋을 기준으로 산점도를 그려보도록 하겠습니다.

import pandas as pd

data = {'name' : ['Seoul', 'Busan', 'Daejeon'], 'longitude' : [126.6, 129.1, 127.4], 'latitude' : [37.4, 35.2, 36.3], 'population' : [0.977, 0.3430, 0.153]}
df = pd.DataFrame(data)

df

 

해당하는 위도 및 경도를 기준으로 점의 크기를 인구 수에 비례하게 그린 코드 및 결과는

다음과 같습니다.

# x축, y축, 그래프 타입(c는 산점도 의미), 점의 크기 및 색상 지정
fig.plot(x = df['longitude'], y = data['latitude'], style="c", size = data['population'], color = 'blue')
fig.show()

 

 

지도에 시각화를 진행할 때 위의 예시처럼 주로 plot 메소드가 많이 활용되는데,

자세한 사용법은 아래 링크의 Pygmt 공식 document를 참고해보세요.

 

pygmt.Figure.plot — PyGMT

» API Reference » pygmt.Figure.plot Improve this page pygmt.Figure.plot Figure.plot(data=None, x=None, y=None, size=None, direction=None, *, straight_line=None, frame=None, cmap=None, offset=None, error_bar=None, connection=None, color=None, intensity=No

www.pygmt.org

 

위에서 소개한 예시들 외에도 지도 시각화에 관련된 매우 다양한 기능을 제공하고 있으니

공식 페이지의 글들을 자세히 살펴보시면 도움이 많이 되실 것입니다.