Choropleth Visualization

아따맘마·2020년 12월 19일
0

데이터 분석

목록 보기
1/12
post-custom-banner

Choropleth 시각화란?

https://plotly.com/python/choropleth-maps/ 를 참고하여 작성
영어라... 해석하기가 난감했다.

Choropleth Map은 다양한 색의 폴리곤으로 이루어진 시각화이다.
이 시각화는 수량의 변화를 공간적으로 나타내는데 효율적이다.
ploty.express 패키지에 있으며 사용 방법은

px.choropleth()

# or

go.Choropleth()

로 사용이 가능하다.

Parameters of Choropleth

Choropleth 시각화를 사용하기 위해서는 두가지 종류의 Input이 요구된다.
1. Geometry Information
지형 정보를 입력받기 위해서는 plotly 내에 built-in된 지형정보를 입력받거나, GeoJSON 파일을 입력받는다.

  1. A list of values indexed by feature identifier.(?)
    이 부분은 계속 코드를 짜보면서 이해해야 할 듯 싶다.

여기서 GeoJSON이란 위치정보를 갖는 점을 기반으로 체계적으로 지형을 표현하기 위해 설계된 개방형 표준 형식이다.

GeoJSON

from urllib.request import urlopen
import json
with urlopen('https://raw.githubusercontent.com/plotly/datasets/master/geojson-counties-fips.json') as response:
    counties = json.load(response)

counties["features"][0]

위 코드는 GeoJSON파일을 Load하는 코딩이다. 어떤 GeoJSON 파일이냐?
미국의 지형 정보를 가지고 있는 GeoJSON이다.
결과물을 보면

Data indexed by id

이번에는 나라별 실업 데이터를 load해보자. 이 데이터는 FIPS code에 의해서 index 되었다. FIPS 코드는 5개의 숫자로 표현된 연방 정보 처리 표준 코드이다.

Choropleth map using GeoJSON

df = pd.read_csv("https://raw.githubusercontent.com/plotly/datasets/master/fips-unemp-16.csv", dtype={"fips":str})

fig = px.choropleth(df,
                   geojson=counties,
                   locations='fips',
                   color='unemp',
                   color_continuous_scale="VIridis",
                    range_color=(0, 12),
                    scope="usa",
                    labels={'unemp' : 'unemployment rate'})

FIPS는 위에서 말했다시피 5개의 숫자로 이루어져 있다. 이를 str 데이터 타입으로 변경해줘야 locations 파라미터에서 사용이 가능하다.
scope는 이렇게 정의되어 있다.

the named "scope" of a map defines a sub-set of the earth's surface to draw

위 choropleth 그래프를 그려보면 미국 영토를 확인할 수 있다.

scope를 통해 choropleth 시각화에 그릴 지도를 정의하는 것 같다. 이 scope에는 다음과 같은 변수가 사용 가능하다.
world, usa, europe, asia, africa, north america, south america

이 location에는 또다른 변수가 사용 가능하다. distrcit를 한번 써보자.

df = px.data.election()
geojson = px.data.election_geojson()
profile
늦게 출발했지만 꾸준히 달려서 도착지점에 무사히 도달하자
post-custom-banner

0개의 댓글