지도시각화 - Folium

  • folium.Map()
    tuple or list, default None
    Latitude and Longitude of Map (Northing, Easting).
m = folium.Map(location=[37.5696249, 127.049604], zoom_start=14) # 0~18
m

  • save()
m.save('./folium.html')
  • tiles option
    • "OpenStreetMap"
    • "Mapbox Bright" (Limited levels of zoom for free tiles)
    • "Mapbox Control Room" (Limited levels of zoom for free tiles)
    • "Stamen" (Terrain, Toner, and Watercolor)
    • "Cloudmade" (Must pass API key)
    • "Mapbox" (Must pass API key)
    • "CartoDB" (positron and dark_matter)
m = folium.Map(
    location=[37.5696249, 127.049604],
    zoom_start=14,
    tiles='OpenStreetMap') # 0~18
m

  • jupyter 외 다른 터미널 이용 시 html로 저장 후 열어야함
  • folium.Marker()
    지도에 마커 생성
# 집
m = folium.Map(
    location=[37.5696249, 127.049604],
    zoom_start=13,
    tiles='OpenStreetMap')

#영빈관, marker
folium.Marker((37.586652,126.9767701), popup='<b>청와대<b>').add_to(m)

#우리집, marker, tooltip
folium.Marker(
    location=[37.5696249, 127.049604],
    popup='<b>우리집<b>', # html 문법활용 볼드체
    tooltip='<i>우리집<i>').add_to(m)
m

#DDP html을 통한 웹사이트 연결
folium.Marker(
    location=[37.5667521, 127.0101046],
    popup='<a href="https://korean.visitkorea.or.kr/detail/ms_detail.do?cotid=758fb4e9-533f-4636-8753-73b8d059c54d&utm_source=googlemap" target=_"blink">DDP</a>', 
    tooltip='<i>DDP<i>',
    ).add_to(m)
m

  • folium icon
# 집
m = folium.Map(
    location=[37.5696249, 127.049604],
    zoom_start=13,
    tiles='OpenStreetMap')

#Icon 추가
folium.Marker(
    (37.586652,126.9767701),
    popup='<b>청와대<b>',
    tooltip='icon',
    icon=folium.Icon(color='black', icon='info-sign')
            ).add_to(m)

#icon icon color
folium.Marker(
    location=[37.5696249, 127.049604],
    popup='<b>우리집<b>', # html 문법활용 볼드체
    tooltip='<i>Icon color<i>',
    icon=folium.Icon(color='red',
                     icon_color='blue',
                     icon='cloud')
            ).add_to(m)

#icon custom
folium.Marker(
    location=[37.5802443, 126.9946543],
    popup = '창경궁',
    tooltip='Icon custom',
    icon=folium.Icon(
                    color='purple',
                    icon_color='white',
                    icon='amazon',
                    angle=360,
                    prefix='fa') #Font-Awesome에서 가져온 것들은 fa를 넣어주고, bootstrap3에서 가져온건 glyphicon를 넣어주기 
            ).add_to(m)

m

  • folium.ClickForMarker()
    지도 위에 마우스로 클릭했을때 마커 생성
    마커를 클릭시 위도, 경도 및 기타 옵션 생성
m = folium.Map(
    location=[37.5696249, 127.049604],
    zoom_start=13,
    tiles='OpenStreetMap')

m.add_child(folium.ClickForMarker(popup='ClickForMarker'))

  • folium.LatLngPopup()
    지도를 마우스로 클릭했을때 위도, 경도 정보 반환
m = folium.Map(
    location=[37.5696249, 127.049604],
    zoom_start=13,
    tiles='OpenStreetMap')

m.add_child(folium.LatLngPopup())

  • folium.Circle(), folium.CircleMarker()
m = folium.Map(
    location=[37.5696249, 127.049604],
    zoom_start=13,
    tiles='OpenStreetMap')

#Circle
folium.Circle(location=(37.5802443, 126.9946543),
              radius=100,
              fill=True, # 원내부 색 채우기
              color='#eb9e34',
              fill_color='red',
              popup='Circle Popup',
              tooltip='Circle Tooltip'
             ).add_to(m);

#CircleMarker
folium.Circle(location=(37.586652, 126.9767701),
              radius=100,
              fill=True, # 원내부 색 채우기
              color='red',
              fill_color='orange',
              popup='CircleMarker Popup',
              tooltip='CircleMarker Tooltip'
             ).add_to(m);

m

  • folium.Choropleth
state_data = pd.read_csv("../data/02. US_Unemployment_Oct2012.csv")
state_data.tail(2)

m = folium.Map([43, -102], zoom_start=3) # 미국 좌표

folium.Choropleth(
    geo_data='../data/02. us-states.json', #경계선 좌표값이 담긴 데이터
    data=state_data, #Series or DataFrame
    columns=['State', 'Unemployment'],
    key_on='feature.id',
    fill_color='BuPu',
    fill_opacity=0.2, #0~1
    line_opacity=0.2, #0~1
    legend_name='Unemployment rate (%)'
).add_to(m)

m

  • 아파트 유형 지도 시각화
    공공데이터포털
df = pd.read_csv("../data/02. 서울특별시 동작구_주택유형별 위치 정보 및 세대수 현황_20210825.csv", encoding='euc-kr')
df.tail(2)

  • 아파트 데이터
  • 시각화
# folium

m = folium.Map(location=[37.5123246, 126.939411], 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='darked' if row.세대수 >= 199 else 'darkblue')
        
    ).add_to(m)
    
    #Circle
    folium.Circle(
            location=[lat, lng],
            radius=row.세대수 * 0.2,
            fill=True,
            color='pink' if row.세대수 >= 518 else 'green',
            fill_color='pink' if row.세대수 >= 518 else 'green'
        ).add_to(m)
m

profile
개발도상인 냄비짱

0개의 댓글