[부동산|3|Plotly] 부산시 미분양 아파트 현황 - Plotly mapbox 시각화

 
 
이번에는 위도, 경도 정보를 활용하여 plotly mapbox를 활용한 지도 시각화를 해보겠습니다.
 
이미 지난 '전국도시공원' 주제와 '자전거'주제를 통해 지도 시각화에 대해 알아보았는데요. 
 
해당 포스팅들로 구체적인 활용법을 많이 기술하였기 때문에 이번 포스팅에서는 간단히 코드만 알아보고, 새로운 skill 몇가지만 더 알아보도록 하겠습니다.
 
 

Plotly.express    px.scatter_mapbox()  - mapbox 지도에 scatter plot 그리기

 

 

설명을 위해 작성한 코드를 바로 제시하도록 하겠습니다.

 

px.set_mapbox_access_token(open("mapbox_token.py").read())
fig1 = px.scatter_mapbox(df, lat="위도", lon="경도", zoom=10,
                         hover_data=['상세주소','전용면적(M2)', '준공여부',
                                     '총분양가구수', '미분양가구수'],
                         size='미분양가구수')

 

 매우 간단하게 표현가능한 것을 알 수 있습니다.

 

 plotly.express에서 제공하는 scatter_mapbox를 활용하였는데요. 사용가능한 parameter들의 용법을 몇가지 알아보고자 지금 현재 코드 상태에서의 결과물을 먼저 보도록 하겠습니다.

 

 이후 parameter들을 소개하면서 반영시 어떤 변화가 나타나는지 비교해 보시면 되겠습니다.

 

 

 interactive 지도이기 때문에 마우스 휠을 이용해 zoom을 당겨 보는 것도 가능합니다.

 

 이러한 편리성 때문에 plotly의 활용을 애호하게 되는 것 같습니다.

 

 

 

 

 

 

px.scatter_mapbox() parameter 알아보기

 

 

 그럼 이제 사용가능한 parameter들을 알아보기 위해 scatter_mapbox의 definition을 살펴보겠습니다. 

 

def scatter_mapbox(
    data_frame=None,
    lat=None,
    lon=None,
    color=None,
    text=None,
    hover_name=None,
    hover_data=None,
    custom_data=None,
    size=None,
    animation_frame=None,
    animation_group=None,
    category_orders={},
    labels={},
    color_discrete_sequence=None,
    color_discrete_map={},
    color_continuous_scale=None,
    range_color=None,
    color_continuous_midpoint=None,
    opacity=None,
    size_max=None,
    zoom=8,
    center=None,
    mapbox_style=None,
    title=None,
    template=None,
    width=None,
    height=None,

 

 사용가능한 parameter들이 나열되어 있습니다.

 

 data_frame은 그 인자의 명칭 그대로 pandas DataFrame 객체를 밀어 넣어 주면 됩니다.

 

 lat에는 위도 값을 넣고, lon에는 경도 값을 제공하면 됩니다.

 

 이 3가지 parameter면 기본적인 mapbox상의 표현은 가능합니다.

 

 

 그 외 몇가지 쓸만한 parameter들에 대해 알아 보겠습니다.

 

 

 (1) width 와 height 

 

 지도 Frame자체의 넓이와 높이를 결정합니다. 지도 사이즈를 조절하고 싶을 때 이용합니다.

 

 

 (2) title

 

 지도에 제목을 부여합니다.

 

 

 (3) zoom

 

 지도가 처음 로딩되었을 때 확대의 정도를 결정합니다. Definition에서 보시는 바와 같이, Default값은 8로 설정되어 있습니다.

 숫자를 높일 수록 더 확대되게 됩니다.

 

 

 (4) mapbox_style

 

 mapbox style을 string값으로 지정해 줌으로서, 지도 layer의 선택이 가능합니다. 아래 이미지는 'open-street-map'을 주었을 때의 출력결과의 변화된 이미지 입니다.

 

 

  아래는 layout.mapbox.style 의 참조문입니다.

 

  • "white-bg" yields an empty white canvas which results in no external HTTP requests
  • "open-street-map""carto-positron""carto-darkmatter""stamen-terrain""stamen-toner" or "stamen-watercolor" yeild maps composed of raster tiles from various public tile servers which do not require signups or access tokens
  • "basic""streets""outdoors""light""dark""satellite", or "satellite-streets" yeild maps composed of vector tiles from the Mapbox service, and do require a Mapbox Access Token or an on-premise Mapbox installation.

 

 적어도 'white-bg', 'open-stree-map', "carto-positron", "carto-darkmatter", "stamen-terrain", "stamen-toner" or "stamen-watercolor"까지는 access token이 필요치 않기에 자유롭게 변경 사용이 가능하겠고, mapbox access token을 받으면 'dark'나 'light'와 같은 추가적인 style 사용이 가능합니다. 

 

 

 

 

 

 

 

 mapbox access token을 무료로 받는 방법에 관해서는 아래의 포스팅으로 안내해 드렸었으니, 링크에서 확인해 주세요. 

 

 

[생활|1|Plotly] 전국도시공원 - Plotly 기본 (2부)

 

 

 (5) hover_name

 

 hover되는 데이터의 제목에 해당되는 값을 설정합니다.

 hover_name에 '상세주소' series를 준 결과입니다. 

 

 

 상세주소 값이 hovering data의 제목과 같은 위치에 배치되는 것이 확인됩니다.

 

 

 (6) size 

 

 marker의 크기를 결정합니다. marker의 크기값에 '미분양가구수'를 주었기 때문에 미분양가구수가 많으면 많을수록 marker의 크기가 커집니다.

 

 

 그럼 이제 코드를 최종 아래와 같이 바꾸고 다시 결과물을 출력해 보겠습니다.

px.set_mapbox_access_token(open("mapbox_token.py").read())
fig1 = px.scatter_mapbox(df, lat="위도", lon="경도", zoom=11, hover_name='상세주소',
                         hover_data=['전용면적(M2)', '준공여부',
                                     '총분양가구수', '미분양가구수'],
                         size='미분양가구수', mapbox_style='carto-positron')

 

 다양한 변경 사용은 제시된 parameter들을 변경해 적용해 봄으로써, 익혀 나가실 것을 권장 드립니다.

 

 

 

 

NPU(엔피유) 관세사무소

대표관세사 고장주

Tel) 031-986-7190

E-mail) sales@npucus.com

[NPU관세사무소 프로모션 페이지] https://www.tradenpu.com/npu_cus/

[무역비지니스 인텔리전스 서비스 | TradeNPU] https://www.tradenpu.com

[파이썬 실용 예제. 무역과 공공데이터] https://pdatinmylife.tistory.com

Certified Customs Broker JangJu Goh

Executive Customs Broker @ NPU Customs Consulting

CEO @ JG TradePlus

sales@npucus.com

Trade Compliance / Customs clearance management at foreign company

Working experience of Air export freight forwarding

Data Visualization / Independent development of business automation application – copyright of JGPO_Manager, JG Data Center, AutoCC and etc.

B2B consignment & direct export/import, B2C Overseas Buying Office consulting

Alibaba.com B2B trade / taobao B2C trade / Amazon.com global selling etc. Online trade regulation consulting.

Import license / Quarantine

English communication available

[TradeNPU for partnership proposal - JGTP] https://www.tradenpu.com/jgtp/

반응형

+ Recent posts