본문 바로가기
Python 파이썬/Folium

Folium ) 단계구분도 Choropleth Map

by 하이방가루 2022. 4. 4.
728x90
반응형

단계구분도(Choropleth map)

각기 다른 음영이나 색상 또는 값으로 각 지역과 관련된 데이터를 표현한 지도

지도 데이터 파일 (.geojson) - 지역에 대한 경계 정보를 제공

시각화 하고자 하는 데이터 파일 (.csv 등) - 지역별로 표현하고자 하는 데이터를 제공

Choropleth와 같은 레이어를 만들 때 위의 이 두 데이터를 파라미터로 넘겨줘야 하는데 데이터는 각자 다른 파일에 있으므로, 시각화할 데이터를 지도에 얹으려면 두 데이터를 매핑해야 한다.

 

folium.Choropleth()

geo_data = "지도 데이터 파일 경로 (.geojson, geopandas.DataFrame)"

data = "시각화 하고자 하는 데이터파일. (pandas.DataFrame)"

columns = (지도 데이터와 매핑할 데이터, 시각화 하고려는 데이터),

key_on = "지도 데이터 파일에서 데이터 파일과 매핑할 값 feature.properties.xxx",

fill_color = "시각화에 쓰일 색상",[fill_opacity=면색 투명도(0~1), line_opacity=선색 투명도(0~1),]

legend_name = "칼라 범주 이름",

threshold_scale = list, 구역별 색을 나눠줄 값

 

import folium
import json
import pandas as pd

url = (
    "https://raw.githubusercontent.com/python-visualization/folium/master/examples/data"
)
state_geo = f"{url}/us-states.json" # 미국 각 주의 경계 데이터
state_unemployment = f"{url}/US_Unemployment_Oct2012.csv" # 실업률 데이터
state_data = pd.read_csv(state_unemployment) # pandas.DataFrame으로 만들기

m = folium.Map(location=[48, -102], zoom_start=3)

folium.Choropleth(
    geo_data=state_geo,
    name="choropleth",
    data=state_data,
    columns=["State", "Unemployment"],
    key_on="feature.id",
    fill_color="YlGn",
    fill_opacity=0.7,
    line_opacity=0.2,
    legend_name="Unemployment Rate (%)",
).add_to(m)

folium.LayerControl().add_to(m)
# 레이어 컨트롤을 추가하면 오른쪽 컬럼범주 아래 레이어 아이콘을 통해 구역표시를 없애거나 다시 나타낼 수 있다.

display(m)

툴팁 기능 추가

# ~ 생략 ~

m = folium.Map(location=[48, -102], zoom_start=3)

# 변수에 저장해 주어야 한다.
fmap = folium.Choropleth(
    geo_data=state_geo,
    name="choropleth",
    data=state_data,
    columns=["State", "Unemployment"],
    key_on="feature.id",
    fill_color="YlGn",
    fill_opacity=0.7,
    line_opacity=0.2,
    legend_name="Unemployment Rate (%)",
).add_to(m)

# 툴팁처리 추가
fmap.geojson.zoom_on_click = False
fmap.geojson.add_child(
     folium.features.GeoJsonTooltip(['name'],labels=False) # Tooltip
)

# 출력은 Map 객체로
display(m)

팝업 기능 추가

# ~ 생략 ~

m = folium.Map(location=[48, -102], zoom_start=3)

fmap = folium.Choropleth(
    geo_data=state_geo,
    name="choropleth",
    data=state_data,
    columns=["State", "Unemployment"],
    key_on="feature.id",
    fill_color="YlGn",
    fill_opacity=0.7,
    line_opacity=0.2,
    legend_name="Unemployment Rate (%)",
).add_to(m)

# 팝업처리 추가
fmap.geojson.zoom_on_click = False
fmap.geojson.add_child(
     folium.features.GeoJsonPopup(['name'],labels=False) # Popup
)

display(m)

728x90
반응형

'Python 파이썬 > Folium' 카테고리의 다른 글

Folium ) 지도에 다양한 마커 표시하기  (0) 2022.04.01
Folium ) 지도 만들기  (0) 2022.03.31
Folium ) 소개  (0) 2022.03.31

댓글