반갑습니다~ 꽁냥이 블로그에 오신 것을 환영합니다.
지난 포스팅에서는 3~4차원 데이터를 2차원 평면으로 시각화한 것이 버블 차트이며 Matplotlib을 이용하여 그려보는 방법에 대해서 알아보았습니다.
Matplotlib을 이용하여 버블 차트(Bubble Chart) 그리기
모션 버블 차트는 시간이라는 변수가 추가되어 시간에 따라 동적으로 움직이는 버블 차트입니다. 이렇게 시간에 따라 움직이는 버블 차트는 Matplotlib으로는 시간에 따른 버블 차트를 일일이 이미지로 저장한 뒤 이를 gif 파일로 만들어서 구현할 수는 있습니다. 하지만 과정이 너무 복잡하고 대신 Plotly라는 라이브러리를 이용하여 굉장히 간단하게 구현할 수 있습니다.
따라서 이번 포스팅에서는 움직이는 버블 차트(또는 모션 버블 차트)를 Plotly를 이용하여 그리는 방법에 대해서 알아보려고 합니다.
1. 데이터
데이터는 시간에 따른 국가별 기대수명과 GDP 데이터를 이용합니다. 굉장히 유명한 데이터이지요. 아래 데이터를 다운받아주세요.
여기서는 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를 이용하여 결과를 출력할 수 있도록 합니다.
위 코드를 실행하면 아래와 같은 그림이 나올 거예요.
이때 재생 버튼을 누르면 움직이는 버블 차트를 확인할 수 있어요.
지금까지 꽁냥이의 글 읽어주셔서 감사합니다. 다음에도 좋은 내용으로 찾아뵙겠습니다.
'데이터 분석 > 시각화' 카테고리의 다른 글
Plotly의 원리와 선 그래프(Line Chart, 라인 차트) 하나 또는 여러개 그리기 (400) | 2022.04.08 |
---|---|
Plotly 그림을 블로그에 삽입(Embedding)시키기. (396) | 2022.04.03 |
Matplotlib 이미지 파일 읽기/저장하기 (612) | 2021.08.16 |
Matplotlib을 이용하여 버블 차트(Bubble Chart) 그리기 (832) | 2021.08.10 |
Matplotlib을 이용하여 바 차트(Bar Chart)에 선 그래프 추가하기. (857) | 2021.08.05 |
댓글