반응형
Python Map Visualization : Pygmt
파이썬에서 실제 지도에 시각화를 진행할 수 있는 유용한 모듈인
Pygmt에 대하여 설치 및 간단한 사용법에 관한 예제를 다루어보도록 하겠습니다.
참고로, 해당 포스팅은 아래 링크의 Pygmt 튜토리얼을 참조하여 작성했습니다.
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를 참고해보세요.
위에서 소개한 예시들 외에도 지도 시각화에 관련된 매우 다양한 기능을 제공하고 있으니
공식 페이지의 글들을 자세히 살펴보시면 도움이 많이 되실 것입니다.
'Python > Utils' 카테고리의 다른 글
파이썬 requests 비동기로 요청하기(aiohttp 및 asyncio 활용) (0) | 2023.09.16 |
---|---|
파이썬에서 yaml 파일을 읽고 쓰는 방법 (0) | 2022.11.27 |
파이썬에서 상수(const) 기능을 사용하는 방법 (0) | 2022.10.11 |