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
위에서 소개한 예시들 외에도 지도 시각화에 관련된 매우 다양한 기능을 제공하고 있으니
공식 페이지의 글들을 자세히 살펴보시면 도움이 많이 되실 것입니다.
'Python > Utils' 카테고리의 다른 글
파이썬 requests 비동기로 요청하기(aiohttp 및 asyncio 활용) (0) | 2023.09.16 |
---|---|
파이썬에서 yaml 파일을 읽고 쓰는 방법 (0) | 2022.11.27 |
파이썬에서 상수(const) 기능을 사용하는 방법 (0) | 2022.10.11 |