파이썬 지도 시각화 라이브러리 완벽 가이드: Folium부터 GeoPandas까지

안녕하세요, 파이썬 코딩에 관심 있는 여러분! 오늘은 파이썬 지도 시각화 라이브러리에 대해 알아볼 거예요. 지도를 통해 데이터를 표현하는 것, 멋지지 않나요? 여러분도 분명 한 번쯤 멋진 인터랙티브 지도를 보고 “와, 나도 저런 거 만들 수 있을까?”라고 생각해 보셨을 거예요.

자, 걱정 마세요! 이 포스트를 통해 여러분도 충분히 멋진 지도 시각화를 만들 수 있답니다. 다양한 파이썬 지도 시각화 라이브러리들을 하나씩 살펴보면서, 초보자 여러분도 쉽게 따라할 수 있는 예제들을 준비했어요.

Folium, GeoPandas, Matplotlib, Plotly 등 유용한 라이브러리들을 알아보고, 실제로 코드를 작성해보면서 지도 시각화의 세계로 빠져볼까요?

파이썬 지도 시각화 라이브러리 비교

여러분, 앞으로 소개할 파이썬 지도 시각화 라이브러리들을 한눈에 비교해볼까요? 각 라이브러리의 특징과 용도를 쉽게 파악할 수 있도록 아래 표를 준비했어요. 이 표를 참고하면 여러분의 프로젝트에 가장 적합한 라이브러리를 선택하는 데 도움이 될 거예요.

라이브러리특징사용 사례
Folium인터랙티브 지도, 사용하기 쉬움, Leaflet.js 기반웹 애플리케이션용 인터랙티브 지도 제작
GeoPandas지리공간 데이터 분석, Pandas와 통합지리공간 데이터셋 분석 및 시각화
Matplotlib높은 수준의 커스터마이징, 다양한 투영법 지원상세하고 정적인 지도 시각화
Plotly인터랙티브 시각화, 3D 및 웹 기반 지도 지원인터랙티브 대시보드 및 3D 지도 구축


이 표를 보면 각 라이브러리의 강점이 잘 드러나죠? Folium은 웹용 인터랙티브 지도를 쉽게 만들 수 있고, GeoPandas는 지리 데이터 분석에 특화되어 있어요. Matplotlib은 세밀한 조정이 가능한 정적 지도를 만들 때 좋고, Plotly는 화려한 인터랙티브 지도 기능과 3D 지도를 만들 수 있답니다.

여러분의 프로젝트 목적과 필요한 기능을 고려해서 적절한 라이브러리를 선택해보세요. 때로는 여러 라이브러리를 조합해서 사용하는 것도 좋은 방법이 될 수 있어요. 예를 들어, GeoPandas로 데이터를 분석한 후 Folium이나 Plotly로 시각화하는 식으로요.

1. Folium – 파이썬 지도 시각화 라이브러리

Folium은 파이썬에서 인터랙티브 지도를 만들 때 가장 많이 사용되는 라이브러리 중 하나예요. Leaflet.js를 기반으로 만들어져서 웹 브라우저에서 멋진 지도를 표시할 수 있죠.

먼저, Folium을 설치해볼까요?

pip install folium

자, 이제 간단한 지도를 만들어볼게요. 아래의 코드를 실행하면 서울 지도를 보여주는 HTML이 생성되는데 그 파일을 열어보면 다음과 같습니다.

파이썬 지도 시각화 라이브러리 - Folium 라이브러리 이용
( 대한민국의 수도 서울 지도 )
import folium

# 서울의 위도와 경도
seoul_lat, seoul_lon = 37.5665, 126.9780

# 지도 생성
m = folium.Map(location=[seoul_lat, seoul_lon], zoom_start=12)

# 마커 추가
folium.Marker([seoul_lat, seoul_lon], popup='Seoul').add_to(m)

# 지도 저장
m.save('seoul_map.html')

코드 해설:

  1. import folium: Folium 라이브러리를 가져옵니다.
  2. seoul_lat, seoul_lon = 37.5665, 126.9780: 서울의 위도와 경도를 변수에 저장합니다.
  3. m = folium.Map(...): Folium을 사용해 지도 객체를 생성합니다. location은 지도의 중심 좌표, zoom_start는 초기 줌 레벨을 설정합니다.
  4. folium.Marker(...): 지정된 위치에 마커를 추가합니다. popup은 마커를 클릭했을 때 나타나는 텍스트입니다.
  5. m.save('seoul_map.html'): 생성된 지도를 HTML 파일로 저장합니다.

이렇게 하면 서울 중심의 인터랙티브한 지도가 생성됩니다. 멋지지 않나요?

2. GeoPandas: 지리 데이터 처리의 강자

GeoPandas는 지리 데이터를 다루는 데 특화된 라이브러리예요. Pandas의 확장 버전이라고 생각하시면 됩니다. 이 파이썬 지도 시각화 라이브러리를 활용해보겠습니다.

GeoPandas 설치는 조금 까다로울 수 있어요. 아래 명령어로 설치해보세요.

pip install geopandas

이제 GeoPandas를 사용해 간단한 세계 지도를 그려볼게요.

GeoPandas로 그린 세계지도 이미지
( GeoPandas로 그린 세계 지도 )
import geopandas as gpd
import matplotlib.pyplot as plt

# Natural Earth 데이터를 직접 URL에서 불러오기
url = "https://naciscdn.org/naturalearth/110m/cultural/ne_110m_admin_0_countries.zip"
world = gpd.read_file(url)

# 지도 그리기
world.plot(figsize=(15, 10))

# 제목 추가
plt.title('World Map', fontsize=16)

# 지도 저장
plt.savefig('world_map.png')
plt.show()

코드 해설:

  1. import geopandas as gpd
    • GeoPandas 라이브러리를 ‘gpd’라는 별칭으로 임포트합니다.
    • 지리정보 데이터를 처리하기 위한 Python 라이브러리입니다.
  2. import matplotlib.pyplot as plt
    • Matplotlib의 pyplot 모듈을 ‘plt’라는 별칭으로 임포트합니다.
    • Python에서 가장 널리 사용되는 데이터 시각화 라이브러리입니다.
  3. url = "https://naciscdn.org/naturalearth/110m/cultural/ne_110m_admin_0_countries.zip"
    • Natural Earth에서 제공하는 세계 지도 데이터의 URL을 지정합니다.
    • 110m은 1:110,000,000 축척의 해상도를 의미합니다.
  4. world = gpd.read_file(url)
    • URL에서 지리 데이터를 직접 읽어 GeoDataFrame으로 저장합니다.
    • 자동으로 ZIP 파일을 처리하고 지리 데이터를 불러옵니다.
  5. world.plot(figsize=(15, 10))
    • 불러온 세계 지도 데이터를 시각화합니다.
    • figsize=(15, 10)으로 가로 15인치, 세로 10인치 크기로 설정합니다.
  6. plt.title('세계 지도', fontsize=16)
    • 지도 상단에 “세계 지도”라는 제목을 추가합니다.
    • fontsize=16으로 글자 크기를 16포인트로 설정합니다.
  7. plt.savefig('world_map.png')
    • 생성된 지도를 ‘world_map.png’ 파일로 저장합니다.
    • 현재 작업 디렉토리에 PNG 형식으로 저장됩니다.
  8. plt.show()
    • 생성된 지도를 화면에 표시합니다.
    • 대화형 환경(예: 주피터 노트북)에서는 인라인으로 표시됩니다.
  9. 일반 Python 스크립트에서는 별도의 창에 표시됩니다.

3. Matplotlib: 기본에 충실한 시각화

Matplotlib은 파이썬의 기본 시각화 라이브러리로, 지도 시각화에도 사용할 수 있어요. 다만, 지도 데이터를 직접 다루어야 하므로 조금 복잡할 수 있습니다.

필요시 pip install basemap 명령어로 패키지를 추가로 설치해야 할 수도 있습니다. 이 파이썬 지도 시각화 라이브러리를 활용해보겠습니다.

Matplotlib로 그린 세계 지도 이미지
( Matplotlib로 그린 세계 지도 )
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap

# 지도 생성
m = Basemap(projection='mill', llcrnrlat=-90, urcrnrlat=90, llcrnrlon=-180, urcrnrlon=180, resolution='c')

# 해안선, 국경선 그리기
m.drawcoastlines()
m.drawcountries()

# 위도, 경도 그리기
m.drawparallels(range(-90, 91, 30), labels=[1,0,0,0])
m.drawmeridians(range(-180, 181, 60), labels=[0,0,0,1])

# 제목 추가
plt.title('World Map by Matplotlib')

# 지도 저장 및 표시
plt.savefig('matplotlib_world_map.png')
plt.show()

코드 해설:

  1. from mpl_toolkits.basemap import Basemap: Basemap 모듈을 가져옵니다.
  2. m = Basemap(...): 지도 객체를 생성합니다. 여기서 투영법과 지도의 범위를 설정합니다.
  3. m.drawcoastlines(), m.drawcountries(): 해안선과 국경선을 그립니다.
  4. m.drawparallels(...), m.drawmeridians(...): 위도선과 경도선을 그립니다.
  5. plt.title(...): 지도에 제목을 추가합니다.
  6. plt.savefig(...), plt.show(): 지도를 저장하고 화면에 표시합니다.

Matplotlib은 세밀한 조정이 가능해서 원하는 대로 지도를 꾸밀 수 있어요!

4. Plotly: 인터랙티브 시각화의 끝판왕

Plotly는 인터랙티브한 시각화를 만들 수 있는 강력한 라이브러리예요. 지도 시각화에도 아주 유용하게 사용할 수 있죠. 이번에는 Plotly 파이썬 지도 시각화 라이브러리를 활용해보겠습니다.

Plotly 그린 서울 지도
( Plotly 그린 서울 지도 )
import plotly.graph_objects as go

# 지도 데이터 생성
fig = go.Figure(go.Scattermapbox(
    mode = "markers",
    lon = [126.9780],
    lat = [37.5665],
    marker = {'size': 20}))

# 지도 레이아웃 설정
fig.update_layout(
    mapbox = {
        'style': "open-street-map",
        'center': {'lon': 126.9780, 'lat': 37.5665},
        'zoom': 10},
    showlegend = False)

# 지도 표시
fig.show()

코드 해설:

  1. import plotly.graph_objects as go: Plotly의 그래프 객체를 가져옵니다.
  2. fig = go.Figure(go.Scattermapbox(...)): 지도 위에 마커를 찍는 객체를 생성합니다.
  3. fig.update_layout(...): 지도의 스타일, 중심 좌표, 줌 레벨 등을 설정합니다.
  4. fig.show(): 생성된 지도를 화면에 표시합니다.

Plotly로 만든 지도는 정말 멋진 인터랙티브 기능을 제공해요. 마우스로 지도를 확대하고 이동할 수 있죠!

자, 여러분! 이렇게 파이썬의 다양한 지도 시각화 라이브러리들을 살펴봤어요. 각각의 라이브러리가 가진 특징과 장단점이 있죠. Folium은 간단하게 인터랙티브한 지도를 만들 수 있고, GeoPandas는 지리 데이터 분석에 강해요. Matplotlib은 세밀한 조정이 가능하고, Plotly는 화려한 인터랙티브 기능을 제공하죠.

여러분의 프로젝트나 데이터에 맞는 라이브러리를 선택해서 사용해보세요. 처음에는 어려울 수 있지만, 계속 연습하다 보면 어느새 멋진 지도 시각화를 만들고 있는 자신을 발견하게 될 거예요!

참고로, 지도를 보는 이유 중 하나는 여행을 위한 것이죠? 파이썬 지도 시각화: 후회없는 여행 경로 확인해 보기(feat. folium package) 포스트 리뷰를 통해서 앞으로 가실 여행 경로를 한번 확인해 보시는 것은 어떨까요?

#용어 해설

  1. 시각화(Visualization): 데이터를 그래픽적으로 표현하는 것을 말합니다. 지도 시각화는 지리적 데이터를 지도 형태로 표현하는 것을 의미해요.
  2. 라이브러리(Library): 프로그래밍에서 자주 사용되는 기능들을 모아놓은 코드 모음입니다. 파이썬에서는 import 문을 사용해 라이브러리를 불러와 사용해요.
  3. 인터랙티브(Interactive): 사용자와 상호작용할 수 있는 기능을 말합니다. 인터랙티브 지도는 확대, 축소, 이동 등의 조작이 가능해요.
  4. 위도(Latitude)와 경도(Longitude): 지구 상의 위치를 나타내는 좌표 체계입니다. 위도는 적도를 기준으로 남북 방향의 각도, 경도는 본초 자오선을 기준으로 동서 방향의 각도를 나타냅니다.
  5. 마커(Marker): 지도 위에 특정 위치를 표시하는 점이나 아이콘을 말합니다.
  6. 줌 레벨(Zoom Level): 지도의 확대 정도를 나타내는 수치입니다. 숫자가 클수록 더 자세한 지도를 볼 수 있어요.
  7. 투영법(Projection): 3차원의 지구를 2차원 평면에 표현하는 방법입니다. 다양한 투영법이 있으며, 각각의 장단점이 있어요.
테리 이모티콘
( 즐겁게 코딩을 합시다! )

유사한 게시물