지도 시각화
2024. 11. 8. 19:01ㆍpython study/sw와 ai 데이터 분석
folium을 활용한 지도시각화
folium
- leaflet.js를 기반으로 만들어짐
- 지도 시각화에 특화된 라이브러리
- 다양한 속성으로 지도를 정보를 추가할 수 있음
folium 설치
pip install folium (colab은 설치할 필요 없음)
folium 선언
import folium
지도 그리기(+속성)
- folium.Map(속성값): 지도를 그려주는 객체
import folium
folium.Map()

- 변수명 = folium.Map(location=[위도, 경도]): 주어진 위치를 기준으로 지도를 표시해 줌
map=folium.Map(location=[37.504735, 126.957056])
map

cf) 경도 위도 찾기
1. 구글 지도에 들어가서 장소 검색해 주기2. 그런 후 마우스 우클릭을 "중앙대를 표시해 주는 마커" 위에 해주고 "이 위치 공유"를 클릭해 준다. 중앙대 검색 3. 그런 뒤 아래의 이미지의 부분을 복사해 주면 끝이다.
- folium.Map(zoom_start=정수값): 확대 축소의 정도를 나타낸다. (기본값은 10!)
map=folium.Map(location=[37.504735, 126.957056],
zoom_start=17)
map

- folium.Map(zoom_control=True(혹은 False)): 줌을 해주는 버튼을 숨기려면 False, 아니라면 True를 해주면 된다.
map=folium.Map(location=[37.504735, 126.957056],
zoom_start=17,
zoom_control=True)
map

map=folium.Map(location=[37.504735, 126.957056],
zoom_start=17,
zoom_control=False)
map

- folium.Map(control_scale=True(혹은 False)): 왼쪽 아래에 표시되는 축적은 생략하려면 False, 아니라면 True를 해주면 된다.
map=folium.Map(location=[37.496307, 126.957395],
zoom_start=18,
zoom_control=False,
control_scale=True)
map

map=folium.Map(location=[37.496307, 126.957395],
zoom_start=18,
zoom_control=False,
control_scale=False)
map

- folium.Map(tiles="스타일"): 지도의 스타일을 지정해 준다.
map=folium.Map(location=[37.504735, 126.957056],
zoom_start=17,
zoom_control=False,
control_scale=True,
tiles="openstreetmap")
map

map=folium.Map(location=[37.504735, 126.957056],
zoom_start=17,
zoom_control=False,
control_scale=True,
tiles="cartodbpositron")
map

Marker 표시하기
- folium.Marker(속성). add_to(지도명 변수): 마커를 생성한 후에 지도에 표시해 준다.
map=folium.Map(location=[37.504735, 126.957056],
zoom_start=17,
zoom_control=False,
control_scale=True)
folium.Marker(location=[37.504735, 126.957056]).add_to(map)
map

Marker 속성들
- folium.Map(popup="메시지"): marker를 클릭했을 때 나오는 메시지
map=folium.Map(location=[37.504735, 126.957056],
zoom_start=17,
zoom_control=False,
control_scale=True)
folium.Marker(location=[37.504735, 126.957056],
popup="중앙대").add_to(map)
map

- 하지만 메시지가 세로로 출력되기 때문에 너비를 넓혀주기 위해서 다음과 같은 속성을 사용해 준다.
- folium.Popup("메시지", max_width=100): 너비를 100으로 지정해 준다.
map=folium.Map(location=[37.504735, 126.957056],
zoom_start=17,
zoom_control=False,
control_scale=True)
mk=folium.Marker(location=[37.504735, 126.957056],
popup=folium.Popup('중앙대학교',max_width=100))
mk.add_to(map)
map

- folium.Maker(tooltip='위치'): marker에 마우스를 올렸을 때 나타나는 메시지
map=folium.Map(location=[37.504735, 126.957056],
zoom_start=17,
zoom_control=False,
control_scale=True)
mk=folium.Marker(location=[37.504735, 126.957056],
tooltip='중앙대학교')
mk.add_to(map)
map

- folium.Map(icon=folium.Icon(속성)). add_to(지도변수명): 지도 위에 다양한 모양의 아이콘을 띄울 수 있다.
속성들
icon='모양' (기본값: information)
https://fontawesome.com/search?s=thin&o=r로 들어가서 모양을 선택할 수 있음.
단 prefix="fa"를 추가해주어야 한다.
color="색상" (기본값: blue)
red, green, lightblue 등
map=folium.Map(location=[37.504735, 126.957056],
zoom_start=17,
zoom_control=False,
control_scale=True)
mk=folium.Marker(location=[37.504735, 126.957056],
tooltip='중앙대학교',
icon=folium.Icon(color="#8c8ab2", icon='school',prefix="fa"))
#color는 rgd값으로 지정, icon은 사이트에 있는 school아이콘으로 가져옴(prefix="fa" 필수)
mk.add_to(map)
map

- folium.Circle(속성들): 지점 근처에 원을 그려 넣는다.
map=folium.Map(location=[37.504735, 126.957056],
zoom_start=17,
zoom_control=False,
control_scale=True)
mk=folium.Marker(location=[37.504735, 126.957056],
tooltip='중앙대학교',
icon=folium.Icon(color="#8c8ab2", icon='school',prefix="fa"))
mk2=folium.Circle(location=[37.504735, 126.957056])
mk.add_to(map)
mk2.add_to(map)
map

- folium.Circle(location=[위도, 경도]): 위도와 경도를 중심으로 원을 그려준다.(위의 코드 참고)
- color="색상": 색상이름 혹은 rgb값을 입력해 준다.
- radius=정수: 원의 크기를 지정해 준다.
- fill=True: 원을 color로 채워준다.
map=folium.Map(location=[37.504735, 126.957056],
zoom_start=17,
zoom_control=False,
control_scale=True)
mk=folium.Marker(location=[37.504735, 126.957056],
tooltip='중앙대학교',
icon=folium.Icon(color="#8c8ab2", icon='school',prefix="fa"))
mk2=folium.Circle(location=[37.504735, 126.957056],
color="purple",
radius=20,
fill=True)
mk.add_to(map)
mk2.add_to(map)
map

MarkerCluster 표시하기
- Marker들을 군집화하여 Marker의 개수로 표현한다.
- MarkerCluster를 생성해 준 다음에 Maker를 추가해 준다.
MarerCluster 선언
from folium.plugins import MarkerCuster
변수명=MarerCluster(). add_to(지도 변수명)
지도 위에 MarkerCluster를 표시해 준다.
import folium
from folium.plugins import MarkerCluster
map=folium.Map(location=[37.504735, 126.957056],
zoom_start=12,
zoom_control=True,
control_scale=True)
mc=MarkerCluster().add_to(map)
folium.Marker(location=[37.50, 126.95]).add_to(mc)
folium.Marker(location=[37.51, 126.96]).add_to(mc)
folium.Marker(location=[37.52, 126.97]).add_to(mc)
folium.Marker(location=[37.52, 126.94]).add_to(mc)
folium.Marker(location=[37.53, 126.95]).add_to(mc)
folium.Marker(location=[37.56, 126.957]).add_to(mc)
folium.Marker(location=[37.57, 126.90]).add_to(mc)
map

'python study > sw와 ai 데이터 분석' 카테고리의 다른 글
| MarkerClsuter+Geojson (5) | 2024.11.10 |
|---|---|
| 지도 시각화2 (2) | 2024.11.09 |
| WordCloud 더 나아가기 (0) | 2024.11.07 |
| WorldCloud 시각화분석 (1) | 2024.11.07 |
| 데이터 시각화2 (0) | 2024.11.06 |


