일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 허깅페이스
- 머신러닝
- 임베딩
- dynamic topic modeling
- 분류모델평가
- Min-Max 알고리즘
- Holdout
- sensibleness
- 감성분석
- degree centrality
- hugging face
- word2vec
- Meena
- 알파베타가지치기
- sbert
- 사회연결망분석
- word representation
- Enriching Word Vectors with Subword Information
- 토픽모델링
- 의미연결망
- GCP
- type-hint
- Google Cloud Platform
- 구글클라우드플랫폼
- QANet
- topic modeling
- 동적토픽모델링
- semantic network
- ROC-AUC Curve
- sequential data
- Today
- Total
Dev.log
Python 지도시각화 라이브러리: Folium 본문
본 포스팅에서는 지도위에 데이터를 표시할수 있는 Python 라이브러리 Folium에 대해 진행해보도록 하겠습니다.
Folium은 지리 공간 데이터를 시각화하는 데 사용되는 Python 라이브러리입니다. 또한 leaflet.js 기반으로 이루어졌으며, 시각화를 위해 OpenStreetMap, Mapbox, Stamen과 같은 지도 이미지들을 제공하기도 합니다. 자세한 내용은 아래 공식 도큐멘트에서 확인할 수 있습니다.
Folium 설치
Folium의 경우 pip을 통한 설치와 anaconda 환경에서 conda를 통해 아래와 같이 설치할 수 있습니다.
! pip install folium
! conda install -c conda-forge folium
Folium을 통한 지도 시각화
먼저 간단한 지도를 그려보겠습니다. Folium은 Map()을 통해 지도를 생성할수 있습니다. 또한 location을 통해 지도의 중심으로 지정할 위도와 경도를 입력할 수 있으며, zoom_start를 통해 지도를 얼마나 확대 할지 결정할 수 있습니다.
import folium
m = folium.Map(location = [37.544129, 127.054357],zoom_start = 14)
m
또한, 위에서 언급한거와 같이 Folium을 사용하면 Stamen Terrain, Stamen Toner, Stamen Water Color, CartoDB Positron 과 같은 다양한 타일로 지도를 만들 수 있습니다. 기본적으로 타일은 OpenStreetMap으로 설정됩니다. 각 타일셋은 지도의 다양한 기능을 보여주며 다양한 목적에 따라 시각화를 진행할 수 있습니다.
from branca.element import Figure
fig = Figure(width=550,height=350)
m=folium.Map(location=[37.544129, 127.054357],
zoom_start = 14)
fig.add_child(m)
folium.TileLayer('Stamen Terrain').add_to(m)
folium.TileLayer('Stamen Toner').add_to(m)
folium.TileLayer('Stamen Water Color').add_to(m)
folium.TileLayer('cartodbpositron').add_to(m)
folium.TileLayer('cartodbdark_matter').add_to(m)
folium.LayerControl().add_to(m)
m
지도 내 마커 추가
지도내 마커를 추가하고 싶을 땐 아래와 같이 Maker()를 통해 추가해 줄 수 있습니다.
fig = Figure(width=550,height=350)
m = folium.Map(location=[37.53897093698831, 127.05461953077439],
zoom_start=14,
)
fig.add_child(m)
folium.Marker([37.54706945947954, 127.04740975332888]).add_to(m)
folium.Marker([37.54461957910074, 127.05590699103249],
popup='<b>subway</b>').add_to(m)
folium.Marker([37.54041716624373, 127.06914637466906],
popup='<b>subway</b>',
tooltip='<i>건대입구역</i>').add_to(m)
m
지도 내 원 그리기
지도내 원과 같은 도형을 통해 범위에 대한 시각화를 진행하고 싶을 땐 CircleMaker()를 통해 시각화를 할 수 있습니다.
fig = Figure(width=550,height=350)
m = folium.Map(location=[37.53897093698831, 127.05461953077439],
zoom_start=13)
fig.add_child(m)
folium.CircleMarker(
[37.54455152583346, 127.05564949938811],
radius=100,
fill=True,
popup='popup',
tooltip='tooltip'
).add_to(m)
m
지도 내 GPS 경로 표시
먼저 데이터셋을 다운로드 해 줍니다. 본 데이터셋은 github의 tisljaricleo유저가 제공하였습니다. GPS경로와 같이 지도위에 선을 나타낼 때에는 polyline()을 사용해 주면 됩니다.
import pandas as pd
import requests
import io
url = "https://raw.githubusercontent.com/tisljaricleo/GPS-visualization-Python/main/data.csv" # Make sure the url is the raw version of the file on GitHub
download = requests.get(url).content
df = pd.read_csv(io.StringIO(download.decode('utf-8')),names=['LATITUDE', 'LONGITUDE'])
df.head(5)
list_ = df[['LATITUDE', 'LONGITUDE']].values.tolist()
fig = Figure(width=550,height=350)
center = list_[0]
m = folium.Map(location=center,
zoom_start=10)
fig.add_child(m)
folium.PolyLine(locations = list_,
).add_to(m)
m
'Python' 카테고리의 다른 글
[2021 Dev-Matching: 웹 백엔드 개발] 로또의 최고 순위와 최저 순위 (0) | 2022.04.27 |
---|---|
[2020 카카오 인턴십] 키패드 누르기 - Python (0) | 2022.04.26 |
[2021 KAKAO BLIND] 신규 아이디 추천 - Python (0) | 2022.04.26 |
Python - psycopg2을 통해 PostgreSQL 접속 (0) | 2022.04.25 |
Python Type-Hints Package (0) | 2022.04.12 |