Pandas (9) - 지도 시각화
Folium 지도 시각화
In [1]:
import folium
In [2]:
m = folium.Map((37.517734, 126.886352), zoom_start=16)
# location : 위경도값을 튜플이나 리스트 형태로
# min_lat=-90, max_lat=90, min_lon=-180, max_lon=180 : 중심점을 잡아 그 기준으로
# zoom_start: 시작 확대정도
m.save('map.html')
m
Out [2]:
Make this Notebook Trusted to load map: File -> Trust Notebook
지도 종류 변경
In [3]:
m = folium.Map((37.517734, 126.886352), zoom_start=16, tiles='Stamen Watercolor') # "Stamen" (Terrain, Toner, and Watercolor)
m
Out [3]:
Make this Notebook Trusted to load map: File -> Trust Notebook
마커 찍기
In [4]:
m = folium.Map([37.517734, 126.886352], zoom_start=17)
folium.Marker((37.517734, 126.886352),
popup="청년취업사관학교", tooltip="SeSAC",
icon=folium.Icon(icon="cloud")).add_to(m)
# popup: 클릭 시, tooltip: 마우스오버 시
folium.CircleMarker((37.517734, 126.886352), radius=20,
color='steelblue', # 테두리 색
fill_color='skyblue', fill_opacity=0.5).add_to(m) # 채울 색상과 투명도
m
Out [4]:
Make this Notebook Trusted to load map: File -> Trust Notebook
- 리스트로 마커 구현
In [5]:
lotto = [
{"store":"담배","loc":[37.62585944357624,127.01847823823798]},
{"store":"화곡본마트","loc":[37.54248103738589,126.84414659211494]},
{"store":"용꿈돼지꿈","loc":[37.5447438346992,126.95223862043447]},
{"store":"일이오마켓","loc":[37.47943673430032,126.98346178441342]},
{"store":"여명슈퍼마켓","loc":[37.61432815661055,127.0415039221072]},
{"store":"5가로또레드탑","loc":[37.570756251987575,127.00235901546226]},
{"store":"복권세상","loc":[35.91885025656432,128.55034430109828]},
{"store":"복권전문점","loc":[37.50384327747725,126.71513104367074]},
{"store":"인현동지하가판","loc":[37.47627910055104,126.63147671205866]},
{"store":"CU(광주서동점)","loc":[35.14814807640179,126.90555219336346]},
{"store":"지산로또방","loc":[35.148338888178,126.93203920504686]},
{"store":"천사로또방","loc":[37.63618838692431,127.21107884503209]},
{"store":"오렌지통신","loc":[37.42889361993242,127.10232604117991]},
{"store":"여수복권방","loc":[37.418353650942116,127.12640523182601]},
{"store":"둘리복권방","loc":[37.34532813934063,126.73627994929885]},
{"store":"금성24시편의점","loc":[37.84401249737699,127.06236893072152]},
{"store":"GS25(청주주은점)","loc":[36.60987111587086,127.49134026856717]},
{"store":"장미슈퍼","loc":[36.276304155315685,126.90940713047799]},
{"store":"장미슈퍼","loc":[36.276304155315685,126.90940713047799]},
{"store":"아이24(수송점)","loc":[35.970108052787594,126.7189421934312]},
{"store":"탑로또","loc":[34.87844231008963,128.62803523643754]}
]
In [6]:
m = folium.Map([37.517734, 126.886352], zoom_start=7)
for i in lotto:
folium.Marker(i['loc'], tooltip=i['store']).add_to(m)
m
Out [6]:
Make this Notebook Trusted to load map: File -> Trust Notebook
- 마커 클러스터에 추가
In [7]:
from folium.plugins import MarkerCluster
In [8]:
m = folium.Map([37.517734, 126.886352], zoom_start=7)
mc = MarkerCluster().add_to(m)
for i in lotto:
folium.Marker(i['loc'], tooltip=i['store']).add_to(mc)
m
Out [8]:
Make this Notebook Trusted to load map: File -> Trust Notebook
Choropleth maps
GeoJSON 정보가 필요하다
In [9]:
import json
In [10]:
m = folium.Map((37.54908187107719, 130.90582702637482))
json_data = open('map.geojson', 'r').read()
print(type(json_data))
json_data = json.loads(json_data) # 파일로 바로 읽어도 되지만 가끔 에러나기에
print(type(json_data))
folium.GeoJson(json_data).add_to(m)
m
Out [10]:
<class 'str'>
<class 'dict'>
Make this Notebook Trusted to load map: File -> Trust Notebook
Reference
- 이 포스트는 SeSAC 인공지능 자연어처리, 컴퓨터비전 기술을 활용한 응용 SW 개발자 양성 과정 - 심선조 강사님의 강의를 정리한 내용입니다.
- Folium API
- Leaflet
- geojson
댓글남기기