pyecharts๋ก ์ ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ
์๋ ํ์ธ์ ํฌ๋ฆฌ๋ฅ์ค์๋ผ์ค์ ๋๋ค.
์ ๋ฒ์๋ pyecharts๋ฅผ ์ด์ฉํด ๋ง๋ ๊ทธ๋ํ๋ฅผ ๋ง๋๋ ๋ด์ฉ์ ๋ค๋ค์ต๋๋ค.
์ด๋ฒ์๋ ๋ง๋ ๊ทธ๋ํ๋งํผ ์์ฃผ ์ฌ์ฉํ๋ ์ ๊ทธ๋ํ์ ๋ํด ๋ค๋ค๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๋จผ์ ์ ๊ฐ ์ฌ์ฉํ ๋ฐ์ดํฐ๋ 2013๋ ๋ถํฐ 2023๋ ๊น์ง ์ถ๊ตฌ์ ์ ๋ฆฌ์ค๋ฌ ๋ฉ์์ ๋ฆฌ๊ทธ ๋์ ๊ธฐ๋ก๊ณผ ๋์ ๊ธฐ๋ก์ ๋๋ค.
(์ํค๋ฐฑ๊ณผ์์ ์ฐธ๊ณ ํ์ต๋๋ค.)
# ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
import pyecharts.options as opts
from pyecharts.charts import Line
# ํ์ํ ๋ฐ์ดํฐ
years = ['2013', '2014', '2015', '2016', '2017', '2018', '2019', '2020', '2021', '2022', '2023']
goals = [46, 28, 43, 26, 37, 34, 36, 25, 30, 6, 7]
assists = [12, 11, 18, 16, 9, 12, 13, 21, 9, 0, 0]
# ๋ฐ์ดํฐํ๋ ์์ผ๋ก ์์ฑ
messi = pd.DataFrame({"์ฐ๋": years, "๊ณจ": goals, "๋์": assists, "๊ฒฝ๊ธฐ": games})
messi
๋ฆฌ์ค๋ฌ ๋ฉ์์ ๋ฆฌ๊ทธ ๊ธฐ๋ก์ ๋ฐ์ดํฐํ๋ ์์ผ๋ก ์ดํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํด๋น ๋ฐ์ดํฐ ์ค ๋์ ๊ธฐ๋ก์ ๋ํ ์ ๊ทธ๋ํ๋ฅผ ๊ฐ๋จํ ๊ทธ๋ ค๋ณด๋ฉด ๋ค์ ์ด๋ฏธ์ง์ฒ๋ผ ์ถ๋ ฅ๋ฉ๋๋ค.
(์ ๋ x์ถ์ intํ ๊ฐ์ ๋ฃ์๋๋ ๊ทธ๋ํ๊ฐ ๊ทธ๋ ค์ง์ง ์์์ ๋ฌธ์ํ์ผ๋ก ๋ years ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ์ต๋๋ค.)
c = (
Line()
.add_xaxis(years) # x์ถ
.add_yaxis("๋์ ", goals) # y์ถ
.set_global_opts(title_opts=opts.TitleOpts(title="๋ฆฌ์ค๋ฌ ๋ฉ์ ์ญ๋ ๊ธฐ๋ก")) # ์ ๋ชฉ
.render_notebook() # ์ฃผํผํฐ ๋
ธํธ๋ถ์ ์ถ๋ ฅ
)
c
์ด๋ฒ์๋ ๋์ ๊ณผ ๋์์ ํ๋์ ๊ทธ๋ํ ์์ ๊ทธ๋ ค๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
c = (
Line()
.add_xaxis(years) # x์ถ
.add_yaxis("๋์ ", goals) # y์ถ 1
.add_yaxis("๋์", assists) # y์ถ 2
.set_global_opts(title_opts=opts.TitleOpts(title="๋ฆฌ์ค๋ฌ ๋ฉ์ ์ญ๋ ๊ธฐ๋ก")) # ์ ๋ชฉ
.render_notebook() # ์ฃผํผํฐ ๋
ธํธ๋ถ์ ์ถ๋ ฅ
)
c
๋ง๋ ๊ทธ๋ํ์์ ์ค๋ช ๋๋ฆฐ ๊ฒ์ฒ๋ผ ์ค์ ์๋จ์ ๋์ /๋์์ ํด๋ฆญํ๋ฉด ํด๋น ๋ณ์๋ฅผ ์ ํ/ํด์ฒดํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค.
์ ๋ ์ ๊ทธ๋ํ๊ฐ ์ข ๋ฐ๋ฐํ๊ฒ ๋๊ปด์ ธ ์ ๋ชจ์์ด๋ ์์์ ๋ณ๊ฒฝํด ๋ดค์ต๋๋ค.
c = (
Line()
.add_xaxis(years) # x์ถ
.add_yaxis("๋์ ", goals, symbol="diamond", symbol_size=10, color="tomato") # ์ ๋ชจ์๊ณผ ์์ ๋ณ๊ฒฝ 1
.add_yaxis("๋์", assists, symbol="square", symbol_size=8, color="orange") # ์ ๋ชจ์๊ณผ ์์ ๋ณ๊ฒฝ 2
.set_global_opts(title_opts=opts.TitleOpts(title="๋ฆฌ์ค๋ฌ ๋ฉ์ ์ญ๋ ๊ธฐ๋ก")) # ์ ๋ชฉ
.render_notebook() # ์ฃผํผํฐ ๋
ธํธ๋ถ์ ์ถ๋ ฅ
)
c
๊ทธ๋๋ ๊ทธ๋ํ๊ฐ ๋ฐ๋ฐํ๊ฒ ๋๊ปด์ ธ์ ์ ๊ทธ๋ํ์ ์คํ์ผ์ ๋ค๋ฅธ ๋๋์ผ๋ก ๋ณ๊ฒฝํ์ต๋๋ค.
c = (
Line()
.add_xaxis(years) # x์ถ
.add_yaxis("๋์ ", goals, symbol="diamond", symbol_size=10, color="tomato", is_smooth=True) # ๋ถ๋๋ฝ๊ฒ
.add_yaxis("๋์", assists, symbol="square", symbol_size=8, color="orange", is_smooth=True) # ๋ถ๋๋ฝ๊ฒ
.set_global_opts(title_opts=opts.TitleOpts(title="๋ฆฌ์ค๋ฌ ๋ฉ์ ์ญ๋ ๊ธฐ๋ก")) # ์ ๋ชฉ
.render_notebook() # ์ฃผํผํฐ ๋
ธํธ๋ถ์ ์ถ๋ ฅ
)
c
is_smooth = True ๋์ is_step = True๋ฅผ ์ฌ์ฉํ๋ฉด ๊ณ๋จ ๋ชจ์์ผ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.
๋ง๋ ์ ๊ทธ๋ํ์ ๋ค์๊ณผ ๊ฐ์ด ํ๊ท ์ ์ถ๊ฐํด ์ข ๋ ์๋ฏธ๋ฅผ ๋ถ์ฌํด ์ค ์๋ ์์ต๋๋ค.
c = (
Line()
.add_xaxis(years) # x์ถ
.add_yaxis("๋์ ", goals, symbol="diamond", symbol_size=10, color="tomato", is_smooth=True,
markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")])) # ํ๊ท ์ถ๊ฐ
.add_yaxis("๋์", assists, symbol="square", symbol_size=8, color="orange", is_smooth=True,
markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")])) # ํ๊ท ์ถ๊ฐ
.set_global_opts(title_opts=opts.TitleOpts(title="๋ฆฌ์ค๋ฌ ๋ฉ์ ์ญ๋ ๊ธฐ๋ก")) # ์ ๋ชฉ
.render_notebook() # ์ฃผํผํฐ ๋
ธํธ๋ถ์ ์ถ๋ ฅ
)
c
๋ง์ฝ ์ ๊ทธ๋ํ์์ ์ต๋๊ฐ์ ๋ํ ์ ๋ณด๋ฅผ ๋ณด์ฌ ์ฃผ๊ณ ์ถ๋ค๋ฉด ์ต๋๊ฐ ๋ง์ปค๋ฅผ ์ถ๊ฐํ์๋ฉด ๋ฉ๋๋ค.
c = (
Line()
.add_xaxis(years) # x์ถ
.add_yaxis("๋์ ", goals, symbol="diamond", symbol_size=10, color="tomato", is_smooth=True,
markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max")])) # ๋ง์ปค ์ถ๊ฐ
.add_yaxis("๋์", assists, symbol="square", symbol_size=8, color="orange", is_smooth=True,
markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max")])) # ๋ง์ปค ์ถ๊ฐ
.set_global_opts(title_opts=opts.TitleOpts(title="๋ฆฌ์ค๋ฌ ๋ฉ์ ์ญ๋ ๊ธฐ๋ก")) # ์ ๋ชฉ
.render_notebook() # ์ฃผํผํฐ ๋
ธํธ๋ถ์ ์ถ๋ ฅ
)
c
์ค๋ ์ค๋นํด ๋ณธ ๋ด์ฉ์ ์ฌ๊ธฐ๊น์ง ์ ๋๋ค.
์ ๋ ๋๋ฆ ๋ฐ์ดํฐ ์๊ฐํ์ ํฅ๋ฏธ๊ฐ ์์ด์, ์ด๋ ๊ฒ ๋ฐ์ํ์ผ๋ก ๊ทธ๋ํ๋ฅผ ์กฐ์ํ ์ ์๋ค๋ ๊ฒ์ด ๋งค๋ ฅ์ ์ด์์ต๋๋ค.