파이썬 지도 시각화 라이브러리 완벽 가이드: 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이 생성되는데 그 파일을 열어보면 다음과 같습니다.

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')코드 해설:
import folium: Folium 라이브러리를 가져옵니다.seoul_lat, seoul_lon = 37.5665, 126.9780: 서울의 위도와 경도를 변수에 저장합니다.m = folium.Map(...): Folium을 사용해 지도 객체를 생성합니다.location은 지도의 중심 좌표,zoom_start는 초기 줌 레벨을 설정합니다.folium.Marker(...): 지정된 위치에 마커를 추가합니다.popup은 마커를 클릭했을 때 나타나는 텍스트입니다.m.save('seoul_map.html'): 생성된 지도를 HTML 파일로 저장합니다.
이렇게 하면 서울 중심의 인터랙티브한 지도가 생성됩니다. 멋지지 않나요?
2. GeoPandas: 지리 데이터 처리의 강자
GeoPandas는 지리 데이터를 다루는 데 특화된 라이브러리예요. Pandas의 확장 버전이라고 생각하시면 됩니다. 이 파이썬 지도 시각화 라이브러리를 활용해보겠습니다.
GeoPandas 설치는 조금 까다로울 수 있어요. 아래 명령어로 설치해보세요.
pip install 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()코드 해설:
import geopandas as gpd- GeoPandas 라이브러리를 ‘gpd’라는 별칭으로 임포트합니다.
- 지리정보 데이터를 처리하기 위한 Python 라이브러리입니다.
import matplotlib.pyplot as plt- Matplotlib의 pyplot 모듈을 ‘plt’라는 별칭으로 임포트합니다.
- Python에서 가장 널리 사용되는 데이터 시각화 라이브러리입니다.
url = "https://naciscdn.org/naturalearth/110m/cultural/ne_110m_admin_0_countries.zip"- Natural Earth에서 제공하는 세계 지도 데이터의 URL을 지정합니다.
- 110m은 1:110,000,000 축척의 해상도를 의미합니다.
world = gpd.read_file(url)- URL에서 지리 데이터를 직접 읽어 GeoDataFrame으로 저장합니다.
- 자동으로 ZIP 파일을 처리하고 지리 데이터를 불러옵니다.
world.plot(figsize=(15, 10))- 불러온 세계 지도 데이터를 시각화합니다.
- figsize=(15, 10)으로 가로 15인치, 세로 10인치 크기로 설정합니다.
plt.title('세계 지도', fontsize=16)- 지도 상단에 “세계 지도”라는 제목을 추가합니다.
- fontsize=16으로 글자 크기를 16포인트로 설정합니다.
plt.savefig('world_map.png')- 생성된 지도를 ‘world_map.png’ 파일로 저장합니다.
- 현재 작업 디렉토리에 PNG 형식으로 저장됩니다.
plt.show()- 생성된 지도를 화면에 표시합니다.
- 대화형 환경(예: 주피터 노트북)에서는 인라인으로 표시됩니다.
- 일반 Python 스크립트에서는 별도의 창에 표시됩니다.
3. Matplotlib: 기본에 충실한 시각화
Matplotlib은 파이썬의 기본 시각화 라이브러리로, 지도 시각화에도 사용할 수 있어요. 다만, 지도 데이터를 직접 다루어야 하므로 조금 복잡할 수 있습니다.
필요시 pip install basemap 명령어로 패키지를 추가로 설치해야 할 수도 있습니다. 이 파이썬 지도 시각화 라이브러리를 활용해보겠습니다.

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()코드 해설:
from mpl_toolkits.basemap import Basemap: Basemap 모듈을 가져옵니다.m = Basemap(...): 지도 객체를 생성합니다. 여기서 투영법과 지도의 범위를 설정합니다.m.drawcoastlines(),m.drawcountries(): 해안선과 국경선을 그립니다.m.drawparallels(...),m.drawmeridians(...): 위도선과 경도선을 그립니다.plt.title(...): 지도에 제목을 추가합니다.plt.savefig(...),plt.show(): 지도를 저장하고 화면에 표시합니다.
Matplotlib은 세밀한 조정이 가능해서 원하는 대로 지도를 꾸밀 수 있어요!
4. 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()코드 해설:
import plotly.graph_objects as go: Plotly의 그래프 객체를 가져옵니다.fig = go.Figure(go.Scattermapbox(...)): 지도 위에 마커를 찍는 객체를 생성합니다.fig.update_layout(...): 지도의 스타일, 중심 좌표, 줌 레벨 등을 설정합니다.fig.show(): 생성된 지도를 화면에 표시합니다.
Plotly로 만든 지도는 정말 멋진 인터랙티브 기능을 제공해요. 마우스로 지도를 확대하고 이동할 수 있죠!
자, 여러분! 이렇게 파이썬의 다양한 지도 시각화 라이브러리들을 살펴봤어요. 각각의 라이브러리가 가진 특징과 장단점이 있죠. Folium은 간단하게 인터랙티브한 지도를 만들 수 있고, GeoPandas는 지리 데이터 분석에 강해요. Matplotlib은 세밀한 조정이 가능하고, Plotly는 화려한 인터랙티브 기능을 제공하죠.
여러분의 프로젝트나 데이터에 맞는 라이브러리를 선택해서 사용해보세요. 처음에는 어려울 수 있지만, 계속 연습하다 보면 어느새 멋진 지도 시각화를 만들고 있는 자신을 발견하게 될 거예요!
참고로, 지도를 보는 이유 중 하나는 여행을 위한 것이죠? 파이썬 지도 시각화: 후회없는 여행 경로 확인해 보기(feat. folium package) 포스트 리뷰를 통해서 앞으로 가실 여행 경로를 한번 확인해 보시는 것은 어떨까요?
#용어 해설
- 시각화(Visualization): 데이터를 그래픽적으로 표현하는 것을 말합니다. 지도 시각화는 지리적 데이터를 지도 형태로 표현하는 것을 의미해요.
- 라이브러리(Library): 프로그래밍에서 자주 사용되는 기능들을 모아놓은 코드 모음입니다. 파이썬에서는
import문을 사용해 라이브러리를 불러와 사용해요. - 인터랙티브(Interactive): 사용자와 상호작용할 수 있는 기능을 말합니다. 인터랙티브 지도는 확대, 축소, 이동 등의 조작이 가능해요.
- 위도(Latitude)와 경도(Longitude): 지구 상의 위치를 나타내는 좌표 체계입니다. 위도는 적도를 기준으로 남북 방향의 각도, 경도는 본초 자오선을 기준으로 동서 방향의 각도를 나타냅니다.
- 마커(Marker): 지도 위에 특정 위치를 표시하는 점이나 아이콘을 말합니다.
- 줌 레벨(Zoom Level): 지도의 확대 정도를 나타내는 수치입니다. 숫자가 클수록 더 자세한 지도를 볼 수 있어요.
- 투영법(Projection): 3차원의 지구를 2차원 평면에 표현하는 방법입니다. 다양한 투영법이 있으며, 각각의 장단점이 있어요.







