Plotly Bubble chart 만들기

Plotly Bubble chart 만들기

Data Visualization
Plotly Bubble chart의 사용방법을 정리합니다.
Author

gabriel yang

Published

September 17, 2023

Plotly Bubble chart 만들기

Plotly로 Bubble 차트 만들기를 연습합니다. 연습을 위한 데이터는 Plotly Express에서 제공하는 데이터를 사용합니다. gapminder.org에서 제공하는 데이터를 데이터프레임으로 불러옵니다. 데이터 구조를 확인하기 위해서 처음 3개의 데이터를 확인하겠습니다.

import plotly.express as px
df = px.data.gapminder()
df.sample(3)
country continent year lifeExp pop gdpPercap iso_alpha iso_num
332 Congo, Dem. Rep. Africa 1992 45.548 41672143 457.719181 COD 180
712 Indonesia Asia 1972 49.203 121282000 1111.107907 IDN 360
489 Equatorial Guinea Africa 1997 48.245 439971 2814.480755 GNQ 226

여러 국가에 대한 정보를 연도별로 정리한 데이터입니다. 대한민국에 대한 데이터를 살펴보면 좀 더 의미있고 재미있는 시각화가 될 것 같습니다. country컬럼의 값이 Korea, Rep.인 데이터만 추출합니다.

df_korea = df[df['country'] == 'Korea, Rep.']
display(df_korea.head(3))
display(df['year'].describe())
country continent year lifeExp pop gdpPercap iso_alpha iso_num
840 Korea, Rep. Asia 1952 47.453 20947571 1030.592226 KOR 410
841 Korea, Rep. Asia 1957 52.681 22611552 1487.593537 KOR 410
842 Korea, Rep. Asia 1962 55.292 26420307 1536.344387 KOR 410
count    1704.00000
mean     1979.50000
std        17.26533
min      1952.00000
25%      1965.75000
50%      1979.50000
75%      1993.25000
max      2007.00000
Name: year, dtype: float64

데이터프레임의 year컬럼의 통계정보를 describe()함수로 확인하여 데이터가 1952년 부터 2007년까지 있음을 확인합니다. 버블차트를 이용하여 인구의 변화 양상을 시각화하겠습니다.

버블차트 만들기

데이터프레임의 인구를 버블차트로 표현합니다. y축에는 기대수명을 표시하고 scatter 차트를 버블차트로 표현하기 위해서 size에 인구정보를 전달했습니다. 이제 새로운 차트에서는 버블의 크기로 인구를 표시합니다..

import numpy as np

fig = px.scatter(df.query("country== 'Korea, Rep.'"), x= 'year', y='lifeExp', size="pop")
fig.show()

버블차트를 살펴보면 1950년, 1970년 이후 기대수명이 크게 올라가는 것을 알 수 있습니다. 추가로 버블의 크기를 통해서 인구 증가폭이 2007년에 가까워 지면서 인구수의 변화가 작아짐을 알 수 있습니다.

버블차트 색상 설정하기

버블차트는 버블의 크기와 색상으로 각각 정보를 표현할 수 있습니다. 이번엔 버블에 색상을 추가하여 총 4개의 정보를 표현합니다. 각 컬럼정보gdpPercap은 1인당 GDP를 의미하고 lifeExp는 기대 수명을 의미합니다. 1인당 GDP 변화에 따른 기대수명과 인구를 대륙별로 비교합니다.

fig = px.scatter(df.query("year==2007"), x="gdpPercap", y="lifeExp",
                  size="pop", color="continent",
                hover_name="country", log_x=True, size_max=60)
fig.show()

우선 색상으로 대륙별 기대수명과 인구를 비교할 수 있습니다. 초록색의 아프리카 대륙은 좌측 하단에 주로 위치하고 있어 인구수와 기대수명이 낮을 것을 알 수 있습니다. 아시아 국가는 버블의 크기도 다양하고 1인당 GDP도 넓은 분포를 보여주고 1인당 GDP가 높은 국가로는 일본, 한국, 싱가포르등이 있는 것을 알 수 있습니다.

참조

  1. https://plotly.com/python/bubble-charts/