지도시각화 - Folium
- folium.Map()
tuple or list, default None
Latitude and Longitude of Map (Northing, Easting).
m = folium.Map(location=[37.5696249, 127.049604], zoom_start=14) # 0~18
m
m.save('./folium.html')
- tiles option
- "OpenStreetMap"
- "Mapbox Bright" (Limited levels of zoom for free tiles)
- "Mapbox Control Room" (Limited levels of zoom for free tiles)
- "Stamen" (Terrain, Toner, and Watercolor)
- "Cloudmade" (Must pass API key)
- "Mapbox" (Must pass API key)
- "CartoDB" (positron and dark_matter)
m = folium.Map(
location=[37.5696249, 127.049604],
zoom_start=14,
tiles='OpenStreetMap') # 0~18
m
- jupyter 외 다른 터미널 이용 시 html로 저장 후 열어야함
- folium.Marker()
지도에 마커 생성
# 집
m = folium.Map(
location=[37.5696249, 127.049604],
zoom_start=13,
tiles='OpenStreetMap')
#영빈관, marker
folium.Marker((37.586652,126.9767701), popup='<b>청와대<b>').add_to(m)
#우리집, marker, tooltip
folium.Marker(
location=[37.5696249, 127.049604],
popup='<b>우리집<b>', # html 문법활용 볼드체
tooltip='<i>우리집<i>').add_to(m)
m
#DDP html을 통한 웹사이트 연결
folium.Marker(
location=[37.5667521, 127.0101046],
popup='<a href="https://korean.visitkorea.or.kr/detail/ms_detail.do?cotid=758fb4e9-533f-4636-8753-73b8d059c54d&utm_source=googlemap" target=_"blink">DDP</a>',
tooltip='<i>DDP<i>',
).add_to(m)
m
# 집
m = folium.Map(
location=[37.5696249, 127.049604],
zoom_start=13,
tiles='OpenStreetMap')
#Icon 추가
folium.Marker(
(37.586652,126.9767701),
popup='<b>청와대<b>',
tooltip='icon',
icon=folium.Icon(color='black', icon='info-sign')
).add_to(m)
#icon icon color
folium.Marker(
location=[37.5696249, 127.049604],
popup='<b>우리집<b>', # html 문법활용 볼드체
tooltip='<i>Icon color<i>',
icon=folium.Icon(color='red',
icon_color='blue',
icon='cloud')
).add_to(m)
#icon custom
folium.Marker(
location=[37.5802443, 126.9946543],
popup = '창경궁',
tooltip='Icon custom',
icon=folium.Icon(
color='purple',
icon_color='white',
icon='amazon',
angle=360,
prefix='fa') #Font-Awesome에서 가져온 것들은 fa를 넣어주고, bootstrap3에서 가져온건 glyphicon를 넣어주기
).add_to(m)
m
- folium.ClickForMarker()
지도 위에 마우스로 클릭했을때 마커 생성
마커를 클릭시 위도, 경도 및 기타 옵션 생성
m = folium.Map(
location=[37.5696249, 127.049604],
zoom_start=13,
tiles='OpenStreetMap')
m.add_child(folium.ClickForMarker(popup='ClickForMarker'))
- folium.LatLngPopup()
지도를 마우스로 클릭했을때 위도, 경도 정보 반환
m = folium.Map(
location=[37.5696249, 127.049604],
zoom_start=13,
tiles='OpenStreetMap')
m.add_child(folium.LatLngPopup())
- folium.Circle(), folium.CircleMarker()
m = folium.Map(
location=[37.5696249, 127.049604],
zoom_start=13,
tiles='OpenStreetMap')
#Circle
folium.Circle(location=(37.5802443, 126.9946543),
radius=100,
fill=True, # 원내부 색 채우기
color='#eb9e34',
fill_color='red',
popup='Circle Popup',
tooltip='Circle Tooltip'
).add_to(m);
#CircleMarker
folium.Circle(location=(37.586652, 126.9767701),
radius=100,
fill=True, # 원내부 색 채우기
color='red',
fill_color='orange',
popup='CircleMarker Popup',
tooltip='CircleMarker Tooltip'
).add_to(m);
m
state_data = pd.read_csv("../data/02. US_Unemployment_Oct2012.csv")
state_data.tail(2)
m = folium.Map([43, -102], zoom_start=3) # 미국 좌표
folium.Choropleth(
geo_data='../data/02. us-states.json', #경계선 좌표값이 담긴 데이터
data=state_data, #Series or DataFrame
columns=['State', 'Unemployment'],
key_on='feature.id',
fill_color='BuPu',
fill_opacity=0.2, #0~1
line_opacity=0.2, #0~1
legend_name='Unemployment rate (%)'
).add_to(m)
m
df = pd.read_csv("../data/02. 서울특별시 동작구_주택유형별 위치 정보 및 세대수 현황_20210825.csv", encoding='euc-kr')
df.tail(2)
- 아파트 데이터
- 시각화
# folium
m = folium.Map(location=[37.5123246, 126.939411], zoom_start=13)
for idx,row in df.iterrows():
#location
lat, lng = row.위도, row.경도
#Marker
folium.Marker(
location=[lat, lng],
popup=row.주소,
tooltip=row.분류,
icon=folium.Icon(
icon='home',
color='lightred' if row.세대수 >= 199 else 'lightblue',
icon_color='darked' if row.세대수 >= 199 else 'darkblue')
).add_to(m)
#Circle
folium.Circle(
location=[lat, lng],
radius=row.세대수 * 0.2,
fill=True,
color='pink' if row.세대수 >= 518 else 'green',
fill_color='pink' if row.세대수 >= 518 else 'green'
).add_to(m)
m