Plotly Line Plot만들기

Plotly Line Plot만들기

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

gabriel yang

Published

September 22, 2023

Plotly Line Plot만들기

Plotly Line plot 연습을 위해서 gapminder 데이터를 사용합니다. 데이터를 살펴보기 위해서 sample 데이터 3개를 확인합니다.

import plotly.express as px
df = px.data.gapminder()
df.sample(3)
country continent year lifeExp pop gdpPercap iso_alpha iso_num
1140 Norway Europe 1952 72.670 3327728 10095.421720 NOR 578
1214 Philippines Asia 1962 54.757 30325264 1649.552153 PHL 608
1339 Serbia Europe 1987 71.218 9230783 15870.878510 SRB 688

각 국가의 기대수명, 인구 등 여러 정보를 시간에 표시됩니다. Line Plot으로 표시하기에는 많은 데이터이기 때문에 Asia대륙에 대한 정보만 표시하겠습니다.

df_asia = df.query("continent == 'Asia'")
df_asia
country continent year lifeExp pop gdpPercap iso_alpha iso_num
0 Afghanistan Asia 1952 28.801 8425333 779.445314 AFG 4
1 Afghanistan Asia 1957 30.332 9240934 820.853030 AFG 4
2 Afghanistan Asia 1962 31.997 10267083 853.100710 AFG 4
3 Afghanistan Asia 1967 34.020 11537966 836.197138 AFG 4
4 Afghanistan Asia 1972 36.088 13079460 739.981106 AFG 4
... ... ... ... ... ... ... ... ...
1675 Yemen, Rep. Asia 1987 52.922 11219340 1971.741538 YEM 887
1676 Yemen, Rep. Asia 1992 55.599 13367997 1879.496673 YEM 887
1677 Yemen, Rep. Asia 1997 58.020 15826497 2117.484526 YEM 887
1678 Yemen, Rep. Asia 2002 60.308 18701257 2234.820827 YEM 887
1679 Yemen, Rep. Asia 2007 62.698 22211743 2280.769906 YEM 887

396 rows × 8 columns

query함수로 continentAsia인 정보만 다시 표시합니다. 396개의 데이터로 줄었습니다.

fig = px.line(df_asia, x='year', y='lifeExp', color='country')
fig.show()

이 데이터를 Line Plot으로 표시합니다. x축을 year로 표시하고 y축을 기대수명을 나타내는 lifeExp로 표시합니다. 각 line의 색은 country에 따라 결정됩니다.

아직 데이터가 많으니 평균기대수명보다 높고 1인당 GDP가 평균 이상인 국가만 다시 필터링하겠습니다.

lifeExp_avg = df['lifeExp'].mean()
gdpPercap_avg = df['gdpPercap'].mean()
display(lifeExp_avg)
df_result = df.query("continent == 'Asia' and lifeExp > @lifeExp_avg and gdpPercap > @gdpPercap_avg")
df_result
59.474439366197174
country continent year lifeExp pop gdpPercap iso_alpha iso_num
87 Bahrain Asia 1967 59.923 202182 14804.672700 BHR 48
88 Bahrain Asia 1972 63.300 230800 18268.658390 BHR 48
89 Bahrain Asia 1977 65.593 297410 19340.101960 BHR 48
90 Bahrain Asia 1982 69.052 377967 19211.147310 BHR 48
91 Bahrain Asia 1987 70.750 454612 18524.024060 BHR 48
... ... ... ... ... ... ... ... ...
1508 Taiwan Asia 1992 74.260 20686918 15215.657900 TWN 158
1509 Taiwan Asia 1997 75.250 21628605 20206.820980 TWN 158
1510 Taiwan Asia 2002 76.990 22454239 23235.423290 TWN 158
1511 Taiwan Asia 2007 78.400 23174294 28718.276840 TWN 158
1535 Thailand Asia 2007 70.616 65068149 7458.396327 THA 764

95 rows × 8 columns

Line Plot에 마커 적용하기

이제 시점을 좀 더 확실히 보기 위해서 markers를 사용하여 마커를 적용합니다.

fig = px.line(df_result, x='year', y='lifeExp', color='country', markers=True)
fig.show()

각 라인에 서로다른 마커 심볼을 적용하기 위해서 symbolcountry정보를 전달합니다. 각 라인은 서로 다른 마커 심볼로 표시됩니다.

fig = px.line(df_result, x='year', y='lifeExp', color='country', symbol='country', markers=True)
fig.show()

마커 사이즈 설정하기

날짜 정보를 갖는 데이터를 Line Plot으로 표시하는 방법을 정리합니다. stock()함수로 주식정보를 불러옵니다.

df = px.data.stocks()
df
date GOOG AAPL AMZN FB NFLX MSFT
0 2018-01-01 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
1 2018-01-08 1.018172 1.011943 1.061881 0.959968 1.053526 1.015988
2 2018-01-15 1.032008 1.019771 1.053240 0.970243 1.049860 1.020524
3 2018-01-22 1.066783 0.980057 1.140676 1.016858 1.307681 1.066561
4 2018-01-29 1.008773 0.917143 1.163374 1.018357 1.273537 1.040708
... ... ... ... ... ... ... ...
100 2019-12-02 1.216280 1.546914 1.425061 1.075997 1.463641 1.720717
101 2019-12-09 1.222821 1.572286 1.432660 1.038855 1.421496 1.752239
102 2019-12-16 1.224418 1.596800 1.453455 1.104094 1.604362 1.784896
103 2019-12-23 1.226504 1.656000 1.521226 1.113728 1.567170 1.802472
104 2019-12-30 1.213014 1.678000 1.503360 1.098475 1.540883 1.788185

105 rows × 7 columns

데이터를 살펴보면 회사들의 주가를 시간에 따라서 저장하고 있습니다. y축에 표시할 데이터는 리스트 형태로 정보를 전달합니다. 마커사이즈는 marker_size를 이용해서 설정합니다.

fig = px.line(df, x='date', y=["GOOG", "AAPL", "FB"], markers=True)
fig.update_traces(marker_size=10)

fig.show()