본문 바로가기

코딩TIPS

[plotly]bar 그래프 그리기

반응형

plotly의 bar를 이용해서 그래프를 그려보겠습니다.

 

라이브러리를 import 하고 기본 제공 데이터중 gapminder를 load 했습니다.

gapminder에는 국가별 기대수명 데이터가 들어 있습니다.

import plotly.express as px

df=px.data.gapminder()
df.head()

 

기본 그래프를 그리는 방식은 data_frame지정, x축, y축을 지정하면 되고,

마지막에 fig.show()를 넣어주면 그래프가 표시됩니다.

우리나라의 연도별 기대수명 그래프를 그리겠습니다.

fig=px.bar(data_frame=df.loc[df['country']=='Korea, Rep.'], x='year', y='lifeExp')
fig.show()

 

color 옵션에 column을 지정하면 그 column의 내용대로 색깔이 나뉘게 됩니다.

대륙을 Asia로 한정해서 x=국가, y=기대수명, color=연도로 지정하겠습니다.

fig=px.bar(data_frame=df.loc[df['continent']=='Asia'], x='country', y='lifeExp', color='year')
fig.show()

 

x, y를 바꿔볼까요. x=기대수명, y=국가로 지정하겠습니다.

그래프가 옆으로 표시되는 것을 알 수 있습니다.

fig=px.bar(data_frame=df.loc[df['continent']=='Asia'], y='country', x='lifeExp', color='year')
fig.show()

 

다음으로는 x=연도, y=기대수명, color=국가로 변경해보겠습니다.

fig=px.bar(data_frame=df.loc[df['continent']=='Asia'], x='year', y='lifeExp', color='country')
fig.show()

위에서 color=연도로 했을 때와 색깔이 표시되는 방식이 달라졌습니다.

연도는 숫자로 연속적인 색깔로 표시되었고, 국가는 string으로 각각의 색깔로 표시되었습니다.

 

여기서 barmode를 group으로 지정해보겠습니다. default는 stack입니다.

fig=px.bar(data_frame=df.loc[df['continent']=='Asia'], x='year', y='lifeExp', 
           color='country', barmode='group')
fig.show()

연도별 국가 그래프가 위로 표시가 쌓여 표시가 되던 것이 옆으로 나란히 놓이게 되었습니다.

위의 그래프와 비교해 보시면 알수 있습니다.

 

facet 옵션은 그래프를 여러 개로 나눌 때 사용합니다.

facet_col, facet_row, facet_col_wrap이 있는데 목적에 맞게 사용하시면 될 것 같습니다.

x=국가, y=기대수명, facet_col=연도로 지정하겠습니다.

fig=px.bar(data_frame=df.loc[df['continent']=='Asia'], x='country', y='lifeExp', 
           color='year', facet_col ='year')
fig.show()

연도 기준으로 그래프가 나뉜것을 알 수 있습니다.

 

facet_col_wrap=3으로 지정하겠습니다.

fig=px.bar(data_frame=df.loc[df['continent']=='Asia'], x='country', y='lifeExp', 
           color='year', facet_col ='year', facet_col_wrap=3)
fig.show()

column으로 전부 표시되던 그래프가 column당 max 3개씩 표시가 되는 것으로 바뀌었습니다.

 

마지막으로 그래프의 제목을 넣어보겠습니다.

title을 이용하면 되는데 아시아 국가별 기대수명으로 하겠습니다.

fig=px.bar(data_frame=df.loc[df['continent']=='Asia'], x='country', y='lifeExp', 
           color='year', facet_col ='year', facet_col_wrap=3, title='아시아 국가별 기대수명')
fig.show()

 

 

이상으로 plotly bar를 이용해서 그래프를 그려봤습니다.

 

반응형