오늘은 지금까지 배워보지 않은 새로운 것을 배우는 날 이다.
folium 이라는 모듈을 사용하려면 역시나 install 먼저 해야한다.
!pip install folium
# window 에러날 때
# !pip install charset
# !pip install charset-normalizer
mac , windows 상관없이 pip 로 설치해 주면 되는데, 간혹 windows 에러가 날 경우에는
아래 2줄을 먼저 실행해보고 설치해주면 될 것 이다.
설치가 완료가 되었다면 불러오자!
import folium
import pandas as pd
import json
location : tuple or list, default None
Latitude and Longitude or Map(Northing, Easting) 위도와 경도..
튜플 또는 리스트 형태로 Map() 안에 위도,경도 정보를 넣어주면 된다.
ex) 엠파이어스테이트 빌딩의 좌표
m = folium.Map(location=[40.753797889588434, -73.98436804980062], zoom_start=15) # 0 ~18
m
이런식으로 구글 지도가 불러와진다!
그 정보를 html 로 저장도 가능하다.
m.save("./folium.html")
이렇게 원하는 위치에 html 파일정보가 들어온다.
이제 옵션을 하나 추가하면서 지도의 디자인을 바꿔보겠다
### tiles option
folium이 계속 업데이트 되면서 옵션사용법이 바뀌고 있기 때문에
늘 공식홈페이지를 참고해 주어야 한다.
https://python-visualization.github.io/folium/latest/reference.html
저는 우선 기본값 "OpenStreetMap" 으로 넣었습니다.
다양한 방법으로 해보자!
m = folium.Map(
location=[40.753797889588434, -73.98436804980062],
zoom_start=15,
tiles="OpenStreetMap"
)
#타임스퀘어
folium.Marker((40.75882370236671, -73.98554486420437)).add_to(m) #튜플형태
#파이브가이즈
folium.Marker(
location=[40.707168453222536, -74.00753509028434],
popup="berger"
).add_to(m)
m
타임스퀘어와 파이브가이즈 2곳을 찍고, 파이브가이즈에는 popup 이라는 옵션으로 berger 라는
것을 알 수 있도록 하였다.
물론 바로 뜨는 것은 아니고 클릭하면 berger 라고 뜬다. 훨씬 알기 쉽다.
html 형태로도 줄 수 있다.
'<b>' '<b>' 로 감싸주어 글씨를 두껍게 만들어 줘봤다.
tooltip="" 이라는 옵션을 주어 마커 옆에 가게 되면 하얀색 표시가 뜨게끔 해주었다.
[전체코드]
m = folium.Map(
location=[40.753797889588434, -73.98436804980062],
zoom_start=15,
tiles="OpenStreetMap"
)
#타임스퀘어
folium.Marker((40.75882370236671, -73.98554486420437)).add_to(m) #튜플형태
#파이브가이즈
folium.Marker(
location=[40.707168453222536, -74.00753509028434],
popup="<b>berger<b>",
tooltip="" # <- 이부분!
).add_to(m)
m
(문자를 넣을 수 있다.)
m = folium.Map(
location=[40.753797889588434, -73.98436804980062],
zoom_start=15,
tiles="OpenStreetMap"
)
#타임스퀘어
folium.Marker((40.75882370236671, -73.98554486420437)).add_to(m) #튜플형태
#파이브가이즈
folium.Marker(
location=[40.707168453222536, -74.00753509028434],
popup="<b>berger<b>",
tooltip="파이브가이즈" # <-이부분!
).add_to(m)
m
당연히 html 지원도 된다. 이텔릭체로 해봐야겠다.
m = folium.Map(
location=[40.753797889588434, -73.98436804980062],
zoom_start=15,
tiles="OpenStreetMap"
)
#타임스퀘어
folium.Marker((40.75882370236671, -73.98554486420437)).add_to(m) #튜플형태
#파이브가이즈
folium.Marker(
location=[40.707168453222536, -74.00753509028434],
popup="<b>berger<b>",
tooltip="<i>파이브가이즈<i>" # <- 이부분!
).add_to(m)
m
신기하다.................
이번에는 하나를 더 만들어서 popup 을 클릭하면 해당 링크(홈페이지 등) 으로 넘어가게끔 해주겠다.
m = folium.Map(
location=[40.753797889588434, -73.98436804980062],
zoom_start=15,
tiles="OpenStreetMap"
)
#타임스퀘어
folium.Marker((40.75882370236671, -73.98554486420437)).add_to(m) #튜플형태
#파이브가이즈
folium.Marker(
location=[40.707168453222536, -74.00753509028434],
popup="<b>berger<b>",
tooltip="<i>파이브가이즈<i>"
).add_to(m)
#트리니티 교회
folium.Marker(
location=[40.70800710289007, -74.01140001297648],
popup='<a href= "https://maps.app.goo.gl/ofVBTZkR1ENb5GeH9" target=_"blink">트리니티교회</a>', #새창을 띄워주는 역할 : target=_
tooltip="Trinity Church"
).add_to(m)
m
나는 트리니티 교회를 하나 더 찍어보았다.
marker 가 하나 더 생긴 것을 볼 수 있다.
저렇게 클릭할 수 있도록 밑줄이 쳐져있고, 실제로 클릭하면 내가 원했던 링크로 '새창' 을 띄워준다. 저기에 target=_"blink" 를 하지 않으면 내가 있는 창에서 이동하기 때문에 필수적으로 써주어야 한다.
m = folium.Map(
location=[40.753797889588434, -73.98436804980062],
zoom_start=15,
tiles="OpenStreetMap"
)
#icon basic
folium.Marker((40.75882370236671, -73.98554486420437),
icon=folium.Icon(color='black', Icon='info_sign')).add_to(m)
#icon icon_color
folium.Marker(
location=[40.75882370236671, -73.98554486420437],
popup="<b>타임스퀘어</b>",
icon=folium.Icon(
color="red",
icon_color="pink",
icon="cloud"
)
).add_to(m)
# #타임스퀘어
# folium.Marker((40.75882370236671, -73.98554486420437)).add_to(m) #튜플형태
#파이브가이즈
folium.Marker(
location=[40.707168453222536, -74.00753509028434],
popup="<b>berger<b>",
tooltip="<i>파이브가이즈<i>"
).add_to(m)
#트리니티 교회
folium.Marker(
location=[40.70800710289007, -74.01140001297648],
popup='<a href= "https://maps.app.goo.gl/ofVBTZkR1ENb5GeH9" target=_"blink">트리니티교회</a>', #새창을 띄워주는 역할 : target=_
tooltip="Trinity Church"
).add_to(m)
m
이렇게 아이콘의 모양과 색상도 변화를 줄 수 있다.
위의 코드에서 icon_basic 부분과 icon icon_color 부분을 보면 된다.
이번에는 다른 아이콘도 한 번 추가해 보겠다.
# icon custom
folium.Marker(
location=[40.707168453222536, -74.00753509028434], #파이브가이즈
popup='파이브가이즈',
tooltip='Icon custom',
icon=folium.Icon(
color="purple",
icon_color="green",
icon="bookmark"
)
).add_to(m)
위에 코드에 이 코드만 추가해 보았다.
파이브가이즈쪽 지도를 보니 이렇게 예쁜 마커로 재탄생 한 것을 볼 수 있다!
뒤에 입체감이 보이는 건 원래 코드를 지우지 않고 같이 실행해서 그렇다.
m = folium.Map(
location=[40.753797889588434, -73.98436804980062],
zoom_start=15,
tiles="OpenStreetMap"
)
#icon basic
folium.Marker((40.75882370236671, -73.98554486420437),
icon=folium.Icon(color='black', Icon='info_sign')).add_to(m)
#icon icon_color
folium.Marker(
location=[40.75882370236671, -73.98554486420437],
popup="<b>타임스퀘어</b>",
icon=folium.Icon(
color="red",
icon_color="pink",
icon="cloud"
)
).add_to(m)
# #타임스퀘어
# folium.Marker((40.75882370236671, -73.98554486420437)).add_to(m) #튜플형태
#파이브가이즈
folium.Marker(
location=[40.707168453222536, -74.00753509028434],
popup="<b>berger<b>",
tooltip="<i>파이브가이즈<i>"
).add_to(m)
#트리니티 교회
folium.Marker(
location=[40.70800710289007, -74.01140001297648],
popup='<a href= "https://maps.app.goo.gl/ofVBTZkR1ENb5GeH9" target=_"blink">트리니티교회</a>', #새창을 띄워주는 역할 : target=_
tooltip="Trinity Church"
).add_to(m)
# icon custom
folium.Marker(
location=[40.707168453222536, -74.00753509028434], #파이브가이즈
popup='파이브가이즈',
tooltip='Icon custom',
icon=folium.Icon(
color="purple",
icon_color="white",
icon="glyphicon glyphicon-cloud",
angle=50, #기울기
prefix="glyphicon" #default 값은 gliphycon "fa" 라는 값으로 해야 font awesome에서의 아이콘을 대부분 사용할 수 있다.
)
).add_to(m)
m
마지막으로 파이브가이즈에 glyphicon 으로 icon 을 custom 하여 그려보았다.