Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

잡동사니 블로그

[Python] Folium을 이용한 지도 시각화 본문

Python

[Python] Folium을 이용한 지도 시각화

코딩부대찌개 2023. 10. 24. 20:21

Folium은 Leaflet.js를 기반으로 만들어져 지도를 유연하게 시각화 할 수 있게 함.

 

라이브러리 설치

!pip install folium

 

서울 표시

import folium
seoul_latitude = 37.5665
seoul_longitude = 126.9780
seoul_map = folium.Map(location=[seoul_latitude, seoul_longitude], zoom_start=12)
seoul_map

folium.Marker를 이용한 위치 표시

import pandas as pd
df = pd.read_excel('./서울지역대학교위치.xlsx', engine='openpyxl', index_col=0)
df.head()
seoul_map = folium.Map(location=[seoul_latitude, seoul_longitude], zoom_start=12)
for name, lat, lng in zip(df.index, df.위도, df.경도):
  folium.Marker([lat, lng], popup=name).add_to(seoul_map)
seoul_map

 

저 못생긴 마커들은 커스텀 마이징도 가능

 

example

folium.CircleMarker([lat, lng],
                      radius=10,
                      color='brown',
                      fill=True,
                      fill_color='coral',
                      fill_opacity=0.7,
                      popup=name).add_to(seoul_map)

 

Choropleth map(단계 구분도) 시각화

file_path = './경기도인구데이터.xlsx'
df = pd.read_excel(file_path, index_col='구분', engine='openpyxl')
df.columns = df.columns.map(str)
geo_path = './경기도행정구역경계.json'
try:
  geo_data = json.load(open(geo_path, encoding='utf-8'))
except:
  geo_data = json.load(open(geo_path, encoding='utf-8-sig'))
g_map = folium.Map(location=[37.4921263, 126.9261711], tiles='Stamen Terrain', zoom_state=9)
year = '2017'
folium.Choropleth(geo_data=geo_data,
                  data = df[year],
                  columns=[df.index, df[year]],
                  fill_color='YlOrRd',
                  fill_opacity=0.7,
                  line_opacity=0.3,
                  threshold_scale=[10000, 100000, 300000, 500000, 700000],
                  key_on='feature.properties.name').add_to(g_map)
g_map