Python(Colab) folium

2023. 6. 9. 17:01파이썬

folium 라이브러리란?

- leaflet.js 기반으로 만들어진 라이브러리 

- 지도위에 데이터를 표현해주는 대표적인 지도 시각화 라이브러리

 

기초설정

!pip install folium
 
import folium
 
from folium.features import CustomIcon    # 아이콘 변경시 사용함
 
from folium.plugins import MarkerCluster   # 마커 클러스터라는 모양을 가진 지도 표시할 라이브러리

 

1. folium.Map(location= [위도,경도], zoom_start=배율)

지도를 띄운다 

2. folium.Marker(location=[위도,경도],max_width= 최대 크기)

지도에 마커를 표시하는 기능

 

3. folium.Popup('내용')

마커 선택시 팝업를 띄운다 

4. folium.add_to()

주로 메소드 체이닝에 사용되며, 띄어놓은 지도에 설정을 추가한다(마커나,팝업 추가시)

 

5. folium.CircleMarker()

원의 범위로 마커를 생성한다.

 

예시

 

POPUP1 = folium.Popup('서울특별시청')
POPUP2 = folium.Popup('덕수궁')
POPUP3 = folium.Popup('서울지방경찰청')
POPUP4 = folium.Popup('광화문')
POPUP5 = folium.Popup('영풍문고-종로본점')

map_folium = folium.Map(location=[37.56652479270633, 126.9779129116262],zoom_start=15)

folium.Marker(location=[37.56652479270633, 126.9779129116262],popup=POPUP1,
              icon=folium.Icon(color='pink',icon='star')).add_to(map_folium)

folium.Marker(location=[37.56585320879458, 126.97514572197248],popup=POPUP2,
              icon=folium.Icon(color='black',icon='ok')).add_to(map_folium).add_to(map_folium)

folium.Marker(location=[37.57504045678939, 126.97195576938117],popup=POPUP3,
             icon=folium.Icon(color='red',icon='user') ).add_to(map_folium)

folium.Marker(location=[37.57617987638928, 126.97694467807803],popup=POPUP4,
              icon=ICON).add_to(map_folium)

folium.Marker(location=[37.56999947440024, 126.98228391170936],popup=POPUP5).add_to(map_folium)

map_folium
 

 

 

CircleMarker 예시

 

# CircleMarker () : 원의 범위를 마커로 생성
map_folium = folium.Map(location=[37.56652479270633, 126.9779129116262],zoom_start=15)

POPUP1 = folium.Popup('서울특별시청')
folium.CircleMarker(location=[37.56652479270633, 126.9779129116262],popup=POPUP,
              radius=100, color='yellow',fill_color='#EC4074').add_to(map_folium)

map_folium  
 
 
 

 

판다스를 이용한 데이터 프레임을 folium 적용

 

 

1. 기초설정

import pandas as pd
 
library = pd.read_csv('/content/drive/MyDrive/KDT-1/데이터분석/data.csv')
library
 

 

2. 지도 기초 세팅

map = folium.Map(location=[37.58,127.0],zoom_start=11)
map
 

 

3. 도서관마다 Marker를 찍고, Popup을 표시

 

for _, row in library.iterrows(): # 변수를 만들고 싶지 않은 경우: 언더바(_) 사용
  icon_image = '/content/drive/MyDrive/KDT-1/데이터분석/checkicon.png'
  icon = CustomIcon(icon_image, icon_size=(45,45))
  popup = folium.Popup(row['시설명'], max_width=200)
  folium.Marker(location=[row['위도'], row['경도']], popup=row['시설명'], icon=icon).add_to(map)


map
 
 

 

 

iterrows() : return 결과 (index, row_series) 
데이터 프레임 반복문 돌릴 때 자주 사용 
리턴값이 2개이기때문에 for문 사용 시: 변수 2개를 세팅해줘야함

 


 

예시 2 서클마커로 도서관 표시하기

조건1. 개관일 2010년 이전 빨강 / 이후 파랑

 

 

# 서클마커로 도서관 표시하기
# 2010년 이후 개장: 파란색
# 2010년 이전 개장: 빨간색
 
def select_color(row):
    year = int(row['개관일'].split('-')[0])
    if year > 2010:
        return 'blue'
    else:
        return 'red'

map = folium.Map(location=[37.58, 127.0], zoom_start=13)
for _, row in library.iterrows():
    popup = folium.Popup(row['시설명'], max_width=200)
    folium.Circle(location=[row['위도'], row['경도']], popup=popup, radius=200, color=select_color(row),
                  fill_color=select_color(row)).add_to(map)
map
 
 
 
728x90