프로젝트 2 - 서울시 범죄현황 데이터 (4)

Jungmin·2022년 10월 18일
1

데이터 분석

목록 보기
8/24

folium

  • folium : 지도 시각화 라이브러리, 크롬에서 가장 동작이 좋다
  • 기본적인 명령
    Map(location=[위도, 경도], Map(location=(위도, 경도)
    tiles : 스타일 설정(OpenStreetMap, Stamen Terrain/Toner/Watercolor, CartoDB positron, CartoDB dark_matter 등)
    zoom_start : 줌 설정(0~18)
    save : 지도를 html 형식으로 저장
    Marker : 지도에 마커 추가
    popup, tooltip : 마커 클릭 또는 커서 이동 시 문구 출력(html 문법 사용 가능)
    icon : 다양한 모양의 아이콘 지원
    add_to : Map을 매개변수로 받아 해당 지도에 마커 추가
! pip install folium
import folium
import pandas as pd
import json

folium.Map()

location: tuple or list, default None
Latitude and Longitude of Map(Northing, Easting)

m = folium.Map(location=[37.55130208776093, 126.94047596885527], zoom_start=15)
m

save("path")

m.save("./folium.html")  #현재 경로에 folium이라는 파일로 저장

tiles 옵션

  • "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.55130208776093, 126.94047596885527],
    zoom_start=14,
    tiles="StamenTerrain"
)
m

folium.Marker()

  • 지도에 마커 생성
m = folium.Map(
    location=[37.55130208776093, 126.94047596885527],
    zoom_start=14,
    tiles="OpenStreetMap"
)
folium.Marker(
    location = [37.55096714787741, 126.94093550672486],
    popup="<b>Univ</b>",  #마커 클릭하면 정보 표시, <b>-</b> :볼드체 옵션
    tooltip="서강대"  #마우스커서만 위치시켜도 정보 표시
).add_to(m)


folium.Marker(
    location = [37.54795529166532, 126.94169946773204],
    popup="<a href='http://www.seoulmetro.co.kr/kr/page.do?menuIdx=541' target=_'blink'>지하철</a>",  #바로 링크 이동하도록 하기
    tooltip="<i>Subway</i>"   #<i>이탤릭체   
).add_to(m)

m

folium.Icon()

  • icon 옵션
    folium.Icon()으로 매개변수를 받는다.
    icon : 아이콘 형태 결정
    icon_color : 아이콘 컬러 설정
    color : 마커 컬러 설정
    angle : 기울기 설정
    prefix: 아이콘에 따라 'fa', 'glyphicon' 사용
    fa : font-awesome
    glyphicon : glyphicon
m = folium.Map(
    location=[37.55130208776093, 126.94047596885527],
    zoom_start=14,
    tiles="OpenStreetMap"
)

#icon basic
folium.Marker(
    location = [37.55096714787741, 126.94093550672486],
    popup="<b>Univ</b>", 
    tooltip="서강대",
    icon=folium.Icon(color="red", info="info-sign")
).add_to(m)

folium.Marker(
    location = [37.54849091300902, 126.94002468496141],
    tooltip="하나",
    icon=folium.Icon(
        color="blue",
        icon_color="pink",
        icon="cloud")
).add_to(m)


folium.Marker(
    location = [37.54795529166532, 126.94169946773204],
    popup="<a href='http://www.seoulmetro.co.kr/kr/page.do?menuIdx=541' target=_'blink'>지하철</a>",  #바로 링크 이동하도록 하기
    tooltip="<i>Subway</i>"   
).add_to(m)


#icon 커스텀
folium.Marker(
    location=[37.54937608874822, 126.93816048604289], 
    popup="Cafe", 
    tooltip="Brewing mansion",
    icon=folium.Icon(
        color="green",
        icon_color="white", 
        icon="amazon",
        prefix='fa')   #fontawesome에서 아이콘 가져오고 prefix='fa'
).add_to(m)
    
m

folium.ClickForMarker()

  • 지도 위에 마우스로 클릭했을 때 마커를 생성.
m = folium.Map(
    location=[37.55130208776093, 126.94047596885527],
    zoom_start=14,
    tiles="OpenStreetMap"
)

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

folium.LatLngPopup()

  • 지도를 마우스로 클릭했을 때 위도/경도 정보 반환
m = folium.Map(
    location=[37.55130208776093, 126.94047596885527],
    zoom_start=14,
    tiles="OpenStreetMap"
)
m.add_child(folium.LatLngPopup())

folium.Circle(), folium.CircleMarker()

m = folium.Map(
    location=[37.55435405069343, 126.9353656797038],
    zoom_start=16,
    tiles="OpenStreetMap"
)

#Circle
folium.Circle(
    location=[37.55226115458833, 126.93536080648934],
    radius=100,
    fill=True,
    color="red",
    fill_color='red',
).add_to(m)

#CircleMarker
folium.CircleMarker(
    location=[37.55145366199116, 126.92933634744482],
    radius=30,
    fill=True,
    color="blue",
    fill_color='blue',
).add_to(m)
m

folium.Choropleth

import json
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, 
    columns=["State", "Unemployment"],
    key_on="feature.id",
    fill_color="BuPu",
    fill_opacity=1, #0~1
    line_opacity=1, #0~1
    legend_name="Unemploymentrate (%)"
).add_to(m)
m

profile
데이터분석 스터디노트🧐✍️

0개의 댓글