Folium (지도시각화)

솔비·2023년 12월 31일
0
post-thumbnail
post-custom-banner

Folium


파이썬에서 사용할 수 있는 지도 시각화 라이브러리

!pip install folium
import folium



Map 메서드


foilum.Map()

  • location = [위도,경도] or (위도,경도) | list or tuple
    ➡️ 지도시각화

  • zoom_start = n | number 0 ~ 18
    ➡️ 지도 확대

  • tiles = "옵션" | str
    ➡️ 지도 모형

    "OpenStreetMap"
    "CartoDB Positron"
    "CartoBD Voyager"
    "NASAGIBS Blue Marble"



Marker 메서드

folium.Marker().add_to(변수)


  • location = [위도,경도] or (위도,경도) | list or tuple
    ➡️ 마커 위치

  • tooltip = "" | str
    ➡️ 마우스 커서위로 문구출력

  • popup = "" | str
    ➡️ 클릭 시 팝업문구
    HTML 이용 시 링크삽입가능

  • icon = folium.Icon()

    • color = "색상"
      ➡️ 좌표컬러
    • icon = "아이콘명"
      ➡️ 좌표의 이미지
    • Icon_color = ""
      ➡️ 좌표 내 아이콘 컬러
    • angle = n
      ➡️ 좌표 내 아이콘 기울기
    • prefic = "glyphicon" or "fa" | 설명확인필요
      ➡️ 이미지별 사용해야할 옵션이 다름



ClickForMarker()

지도를 마우스로 클릭했을 때 마커 생성 후 위도경도 반환
변수.add_child(folium.ClickForMarker())


디폴트값
➡️지도 위 클릭 시 마커생성 -> 위도 경도 반환

popup = "팝업문구" | str
➡️ 팝업옵션 사용 시 위도경도 X -> 팝업문구 반환



LatLngPopup()

지도를 마우스로 클릭했을 때 마커없이 위도경도 반환
변수.add_child(folium.LatLngPopup())


디폴트값
➡️ 지도 위 클릭 시 위도경도 반환



Circle() / CircleMarker()

folium.Circle().add_to(변수)


  • location = (위도, 경도) | list or tuple
    ➡️ circle이 생길 위치
  • radius = n | number
    ➡️ 원 크기
  • fill = True or False
    ➡️ 원 색상채우기 여부
  • color = "" | color
    ➡️ 원 테두리 색상
  • fill_color = "" | color
    ➡️ 원 채우기 색상
  • popup = "str" | str
    ➡️ 클릭 시 문구

folium.CircleMarker()도 동일하나
circleMarker가 조금 더 정확한 위치를 반환한다.



Choropleth()

지도 경계선 추가


  • geo_data="../data/02. us-states.json" | 경계산이 적힌 json 파일 경로
  • data = state_data | 구별 실업율 dataframe
  • columns=["State","Unemployment"]
  • key_on = "feature.id"
  • fill_color="BuPu"
  • fill_opacity=1
  • legend_name = "Unemployment rate (%)"



실습

📊 동작구 주택 위치별 세대수 시각화


  • 건물별 세대 수 및 주소, 주택유형 정보 불러오기
  • non data 제외

  • 세대 수 평균분포 확인

  • 시각화
    1. 세대 수 평균 이상일 경우 Marker red 이하일경우 blue
    2. 세대수 75% 이상일 경우 Circle Marker pink 이하일경우 green
    3. 팝업 - 주택유형
    4. 클릭 시 주소노출 (tooltip)

m = folium.Map(
    [37.49682, 126.9529],	#동작구 위치
    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 = "darkred"  if row.세대수 >= 199 else "darkblue",
        )
    ).add_to(m)

    #CircleMarker
    folium.Circle(
        location = [lat,lng],
        radius = row.세대수,
        fill = True,
        color = "pink" if row.세대수 >= 518 else "green",
        fill_color = "pink" if row.세대수 >= 518 else "green",
    ).add_to(m)


m


Daily Study Note
profile
Study Log
post-custom-banner

0개의 댓글