Geojson & 단계 구분도를 활용한 시각화 순서 1. folium을 활용하여서 간단하게 Map 그려주기 2. Geojson으로 구역마다 경계를 확인해 줌 3. Choropleth를 지도에 추가해 줌
Geojson 불러오기
라이브러리 선언하기
import json
Geojson파일 읽어 오기
변수명=json.load(open("Geojson파일 경로", encoding="인코딩 방식")) (인코딩 방식과 같은 경우에는 euc-kr(한글 인코딩), cp949(MS office), utf-8(유니코드 인코딩))
Geojson으로 행정구역 구별하기
folium.Geojson("Geojson파일 경로"). add_to(지도 변수명)
지도에 단계 구분선 표시하기
folium.Choropleth(속성). add_to(지도 변수명)
geo_data="지도 데이터": json형식의 데이터 data="시각화하려는 데이터": DataFrame형식
columns=(열 이름 1, 열 이름 2) 열 이름 1: 문자열 데이터로 지도 데이터와 이름이 동일해야 한다. 열 이름 2: 수치 데이터로 시각화하고자 하는 열 이름
key_on="매핑할 geo데이터": geojson 데이터에서 시각화하고자하는 데이터와 동일한 값 fill_color="색상": 색상 이름 혹은 rgb fill_opacity=실수: 색상의 투명도(0~1 사이) line_weight=정수: 경계선의 두께 nan_fill_color="색상": 통계 수치가 없는 구역의 색상 지정
1. geo_data 속성에는 geo_json 데이터를 가져오면 된다. 2. data 속성에는 df에 있는 데이터를 가져오면 되는 데 이때 조심해야 하는 부분은 우리가 df에 저장한 데이터는 모든 데이터의 합계가 포함되어 있기 때문에 합계(첫 번째 행)를 제외한 나머지 부분을 가져와야 한다. 3. key_on 속성과 같은 경우는 위에서 종로구가 json파일에서 어디 있는지 확인해 보았는데 거기에서 대괄호를 제거하여서 표시해 주면 된다. 그리고 위에서 [][0][]...으로 했는 데 0과 같은 경우는 index를 표시해 주는 용도이기 때문에 제거해 주어도 된다. (아래 코드 참고) 4. 나머지 속성들을 알맞게 채워주시면 된다!
import folium
Map = folium.Map(location=[37.4965, 126.9572],
zoom_start=11,
tiles='cartodbpositron')
folium.GeoJson(geo_json).add_to(Map)
folium.Choropleth( geo_data=geo_json,
data=df[1:],
columns=['자치구별(2)', '소계'], #열1: 구 이름, 열2: 소계(수치 데이터)
key_on='feature.properties.SIG_KOR_NM', #json데이터 구 이름 위치
fill_color='Blues', #Blues는 파랑색을 활용한 빈도 시각화(구글링 해보면 몇가지 더 존재..)
fill_opacity=0.5, #fill_color의 투명도
line_weight=3, #선의 굵기
line_opacity=0.5 #선의 투명도
).add_to(Map)
Map