본문 바로가기
데이터 분석/시각화

Plotly를 이용하여 모션 버블 차트 만들기

by 부자 꽁냥이 2021. 10. 28.

반갑습니다~ 꽁냥이 블로그에 오신 것을 환영합니다.

 

지난 포스팅에서는 3~4차원 데이터를 2차원 평면으로 시각화한 것이 버블 차트이며 Matplotlib을 이용하여 그려보는 방법에 대해서 알아보았습니다.

 

Matplotlib을 이용하여 버블 차트(Bubble Chart) 그리기

 

Matplotlib을 이용하여 버블 차트(Bubble Chart) 그리기

안녕하세요~ 꽁냥이에요. 오늘은 버블 차트에 대해서 알아보려고 하는데요. 버블 차트는 3차원 데이터를 2차원의 형태로 한눈에 볼 수 있는 차트입니다. 또한 색상 정보를 이용하면 4차원 데이터

zephyrus1111.tistory.com

 

모션 버블 차트는 시간이라는 변수가 추가되어 시간에 따라 동적으로 움직이는 버블 차트입니다. 이렇게 시간에 따라 움직이는 버블 차트는 Matplotlib으로는 시간에 따른 버블 차트를 일일이 이미지로 저장한 뒤 이를 gif 파일로 만들어서 구현할 수는 있습니다. 하지만 과정이 너무 복잡하고 대신 Plotly라는 라이브러리를 이용하여 굉장히 간단하게 구현할 수 있습니다.

 

따라서 이번 포스팅에서는 움직이는 버블 차트(또는 모션 버블 차트)를 Plotly를 이용하여 그리는 방법에 대해서 알아보려고 합니다.

 

1. 데이터

2. Plotly로 구현하기

 

반응형

   1. 데이터

데이터는 시간에 따른 국가별 기대수명과 GDP 데이터를 이용합니다. 굉장히 유명한 데이터이지요. 아래 데이터를 다운받아주세요.

gapminder.csv
0.08MB

 

여기서는 Plotly를 사용해야 하므로 아래와 같이 pip을 이용하여 설치합니다.

 

pip install plotly

 

필요한 모듈을 임포트하고 데이터를 불러옵니다. 

 

import pandas as pd
import plotly.express as px

data = pd.read_csv('./gapminder.csv')

 


   2. Plotly로 구현하기

모션 버블 차트를 만드는 코드는 아래와 같습니다. 하나씩 살펴보겠습니다.

 

fig = px.scatter(data,x="lifeExp", y="gdpPerCap",
                 animation_frame="year",animation_group="country",
                 size="population",color="continent",
                 hover_name="country", 
                 log_y=True, size_max=45, range_y=[200,150000], range_x=[10,100]
 )

fig.layout.updatemenus[0].buttons[0].args[1]["frame"]["duration"] = 500
fig.show()

 

line 1

Plotly에서 버블 차트는 기본적으로 scatter를 사용합니다. 버블 차트를 그릴 데이터(data)를 첫 번째 인자로 넣어줍니다. 다음으로 x축과 y축에 그려질 변수를 지정합니다. 꽁냥이는 x축은 기대수명(lifeExp), y축은 GDP(gdpPerCap)로 설정했습니다.

 

line 2

animation_frame인자에 시간 변수(year)를 넣어주어 버블 차트가 시간에 따라 움직이게 할 수 있습니다. 그리고 움직이는 단위는 animation_group인자로 지정하며 꽁냥이는 국가별로 움직일 수 있도록 animation_group인자에 국가(country)를 넣어주었습니다.

 

line 3

그리고 마커 사이즈는 시간에 따른 인구수를 나타내기 위하여 Population으로 지정하였습니다. 그리고 같은 대륙은 같은 색상으로 표시하기 위하여 color인자에 대륙(continent)을 넣었습니다.

 

line 4

마우스를 마커에 가져다 놓을 때 나타나는 타이틀인 hover_name인자를 국가(country)로 설정하였습니다.

 

line 5

그리고 y축은 log 스케일로 하고 마커 사이즈의 최대값, y축 범위, x축 범위를 설정했습니다.

 

line 8~9

움직이는 속도를 조절하고 show를 이용하여 결과를 출력할 수 있도록 합니다.

 

위 코드를 실행하면 아래와 같은 그림이 나올 거예요.

 

 

이때 재생 버튼을 누르면 움직이는 버블 차트를 확인할 수 있어요.


지금까지 꽁냥이의 글 읽어주셔서 감사합니다. 다음에도 좋은 내용으로 찾아뵙겠습니다.

 


댓글


맨 위로