pyecharts๋ก ๋ง๋ ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ
์๋
ํ์ธ์ ํฌ๋ฆฌ๋ฅ์ค์๋ผ์ด์ค์
๋๋ค.
๋ณดํต ํ์ด์ฌ์ ์ด์ฉํด ๋ฐ์ดํฐ ์๊ฐํ๋ฅผ ์ํํ ๋๋ matplotlib๋ seaborn ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ์ค ๊ฒ๋๋ค.
๋ง์ด ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค ๋ณด๋ ์ ๋ ๋ค์ ์ง๋ฆด ๋๋ ์์๋๋ฐ์
๊ทธ๋์ ์ด๋ฒ์ ๋ค๋ค ๋ณผ ๋ด์ฉ์ pyecharts ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ด๋ป๊ฒ ๋ง๋ ๊ทธ๋ํ๋ฅผ ๋ง๋ค ์ ์๋์ง
ํ ๋ฒ ์ ๋ฆฌํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
(๋ ๋ค์ํ Pyecharts ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ทธ๋ํ๋ค์ ์ด๊ณณ์์ ์ดํด๋ณด์ค ์ ์์ต๋๋ค.)
๋จผ์ pyecharts๋ฅผ ์ค์นํด ์ฃผ์๋ฉด ๋ฉ๋๋ค.
pip install pyecharts
# ์ฃผํผํฐ๋
ธํธ๋ถ ์
!pip install pyecharts
์ค์น๊ฐ ์๋ฃ๋์๋ค๋ฉด, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ import ํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
# ๋ผ์ด๋ธ๋ฌ๋ฆฌ
import pyecharts
# ๋ฒ์ ํ์ธ
print("Pyecharts ๋ฒ์ :", pyecharts.__version__)
pyecharts๋ฅผ ์ฌ์ฉํ ์ค๋น๊ฐ ๋์๋ค๋ฉด ์ด์ด์ ์๊ฐํํ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์๋ณด๊ฒ ์ต๋๋ค.
์ ๋ 2022๋
KBO ํ ์์ ์ ๋ณด๋ฅผ ์ฌ์ฉํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค(๋งํฌ).
๋ง์ง๋ง ํ๊ณผ ๋ฐฉ๋ฌธ ์ปฌ๋ผ์ ์ ์ธํ๊ณ ๋ฐ์ดํฐ๋ฅผ csv ํ์ผ๋ก ๋ง๋ค์ด ์ฌ์ฉํ์ต๋๋ค.
(์ธ์ฝ๋ฉ์ด ํ์ํด cp949 ์ต์
์ ์ถ๊ฐํด์คฌ์ต๋๋ค.)
# ํ๋ค์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ
import pandas as pd
# ๊ทธ๋ฆฌ๊ณ ์ถ์ ๊ทธ๋ํ๋ฅผ ๋ถ๋ฌ์จ๋ค.
from pyecharts.charts import Bar
# ๊ทธ๋ํ ์ต์
์ ์ค์ ํ๊ธฐ ์ํด ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
from pyecharts import options as opts
# kbo csv ํ์ผ ์ฝ์ด์ค๊ธฐ
kbo = pd.read_csv("./kbo.csv", encoding = "cp949")
# ๋ฐ์ดํฐ ์ถ๋ ฅ
kbo
kbo ๋ฐ์ดํฐ๋ฅผ x์ถ์ ํ, y์ถ์ ์น์ผ๋ก ๋ ๋ง๋๊ทธ๋ํ๋ก ๊ทธ๋ ค๋ณด๊ฒ ์ต๋๋ค.
# ๋ฆฌ์คํธ๋ก ๋ณ๊ฒฝ
x = list(kbo["ํ๋ช
"])
y = list(kbo["์น"])
bar = (
Bar()
.add_xaxis(x) # x์ถ
.add_yaxis("์น๋ฆฌ", y) # y์ถ
.set_global_opts(title_opts = opts.TitleOpts(title = "2022๋
KBO ํ์์", # ์ ๋ชฉ
subtitle = "์ ๊ท์์ฆ")) # ์์ ๋ชฉ
.render_notebook() # ์ฃผํผํฐ ๋
ธํธ๋ถ์ ๊ทธ๋ํ๋ฅผ ๋ฐ๋ก ์ถ๋ ฅ
)
bar
์คํ์ํค์๋ฉด ์๋ ์ด๋ฏธ์ง์ฒ๋ผ ๋ง๋๊ทธ๋ํ๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
๋ง๋ ์์ ๋ง์ฐ์ค๋ฅผ ๊ฐ์ ธ๊ฐ๋ฉด ํด๋น ๋ง๋์ ์ ๋ณด๋ฅผ ํ์ธํ์ค ์ ์์ต๋๋ค.
๋ง์ฝ ๊ทธ๋ํ๋ฅผ html ํ์ผ๋ก ์ ์ฅํ๊ณ ์ถ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด .render_notebook()์
render("๊ฒฝ๋ก/ํ์ผ๋ช
.html")์ผ๋ก ๋ฐ๊ฟ์ฃผ์๋ฉด ๋ฉ๋๋ค.
# ๋ฆฌ์คํธ๋ก ๋ณ๊ฒฝ
x = list(kbo["ํ๋ช
"])
y = list(kbo["์น"])
bar = (
Bar()
.add_xaxis(x) # x์ถ
.add_yaxis("์น๋ฆฌ", y) # y์ถ
.set_global_opts(title_opts = opts.TitleOpts(title = "2022๋
KBO ํ์์", # ์ ๋ชฉ
subtitle = "์ ๊ท์์ฆ")) # ์์ ๋ชฉ
.render("kbo_bar_graph.html") # ๊ทธ๋ํ๋ฅผ html๋ก ์ ์ฅ
)
๋ง๋ ๊ทธ๋ํ ์์ ์ซ์๋ฅผ ์ถ๋ ฅํ๊ณ ์ถ์ง ์๋ค๋ฉด add_yaxis์์ label_opts ์ต์ ์ False๋ก ์ฃผ๋ฉด ๋ฉ๋๋ค.
# ๋ฆฌ์คํธ๋ก ๋ณ๊ฒฝ
x = list(kbo["ํ๋ช
"])
y = list(kbo["์น"])
bar = (
Bar()
.add_xaxis(x) # x์ถ
.add_yaxis("์น๋ฆฌ", y, label_opts = False) # label_opts = False ์ต์
์ผ๋ก ๋ฐ์ดํฐ ์ถ๋ ฅ์ off
.set_global_opts(title_opts = opts.TitleOpts(title = "2022๋
KBO ํ์์", # ์ ๋ชฉ
subtitle = "์ ๊ท์์ฆ")) # ์์ ๋ชฉ
.render_notebook() # ์ฃผํผํฐ ๋
ธํธ๋ถ์ ๊ทธ๋ํ๋ฅผ ๋ฐ๋ก ์ถ๋ ฅ
)
bar
๋นจ๊ฐ์์ด ๋๋ฌด ๋ถ๋ด์ค๋ฌ์ ๋ค๋ฅธ ์์ผ๋ก ๋ฐ๊พธ๊ณ ์ถ๋ค๋ฉด color ์ต์
์ ์ค์ ํด ์ฃผ๋ฉด ๋ฉ๋๋ค.
# ๋ฆฌ์คํธ๋ก ๋ณ๊ฒฝ
x = list(kbo["ํ๋ช
"])
y = list(kbo["์น"])
bar = (
Bar()
.add_xaxis(x) # x์ถ
.add_yaxis("์น๋ฆฌ", y, label_opts = False, color = "CornflowerBlue") # color ์ต์
์ผ๋ก ์์์ ๋ณ๊ฒฝ
.set_global_opts(title_opts = opts.TitleOpts(title = "2022๋
KBO ํ์์", # ์ ๋ชฉ
subtitle = "์ ๊ท์์ฆ")) # ์์ ๋ชฉ
.render_notebook() # ์ฃผํผํฐ ๋
ธํธ๋ถ์ ๊ทธ๋ํ๋ฅผ ๋ฐ๋ก ์ถ๋ ฅ
)
bar
๋ง์ฝ x์ถ๊ณผ y์ถ์ ๋ํ ์ด๋ฆ์ ๋ฃ๊ณ ์ถ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ต์ ์ ์ถ๊ฐํด ์ฃผ์๋ฉด ๋ฉ๋๋ค.
# ๋ฆฌ์คํธ๋ก ๋ณ๊ฒฝ
x = list(kbo["ํ๋ช
"])
y = list(kbo["์น"])
bar = (
Bar()
.add_xaxis(x) # x์ถ
.add_yaxis("์น๋ฆฌ", y, label_opts = False, color = "LightCoral") # color ์ต์
์ผ๋ก ์์์ ๋ณ๊ฒฝ
.set_global_opts(title_opts = opts.TitleOpts(title = "2022๋
KBO ํ์์", subtitle = "์ ๊ท์์ฆ"),
xaxis_opts = opts.AxisOpts(name = "์ฐธ์ฌ ํ๋ช
"), # X์ถ ์ด๋ฆ
yaxis_opts = opts.AxisOpts(name = "์น๋ฆฌ ํ์")) # Y์ถ ์ด๋ฆ
.render_notebook() # ์ฃผํผํฐ ๋
ธํธ๋ถ์ ๊ทธ๋ํ๋ฅผ ๋ฐ๋ก ์ถ๋ ฅ
)
bar
๋ง๋ ๊ทธ๋ํ์ ๋ํ ์ ๋ณด๋ฅผ ๋ ๋ฃ๊ณ ์ถ๋ค๋ฉด y์ถ์ ๋๊ธ์ ๋ํ ์ ๋ณด๋ฅผ ์ถ๊ฐํ ์๋ ์์ต๋๋ค.
# ๋ฆฌ์คํธ๋ก ๋ณ๊ฒฝ
x = list(kbo["ํ๋ช
"])
y = list(kbo["์น"])
bar = (
Bar()
.add_xaxis(x) # x์ถ
.add_yaxis("์น๋ฆฌ", y, label_opts = False, color = "LightCoral") # color ์ต์
์ผ๋ก ์์์ ๋ณ๊ฒฝ
.set_global_opts(title_opts = opts.TitleOpts(title = "2022๋
KBO ํ์์", subtitle = "์ ๊ท์์ฆ"),
xaxis_opts = opts.AxisOpts(name = "์ฐธ์ฌ ํ๋ช
"), # X์ถ ์ด๋ฆ
yaxis_opts = opts.AxisOpts(name = "์น๋ฆฌ ํ์",
axislabel_opts = opts.LabelOpts(formatter="{value} (๊ฒฝ๊ธฐ)"))) # Y์ถ ๋๊ธ ํฌ๋งท
.render_notebook() # ์ฃผํผํฐ ๋
ธํธ๋ถ์ ๊ทธ๋ํ๋ฅผ ๋ฐ๋ก ์ถ๋ ฅ
)
bar
๊ฒฐ๊ณผ๋ฅผ ๋ณด์๋ฉด ์ผ์ชฝ y์ถ์ '๊ฒฝ๊ธฐ'๋ผ๋ ๋ฌธ๊ตฌ๊ฐ ์ถ๊ฐ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
๋ค์์ ๊ทธ๋ํ์ ์ค/์์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ์ต์ ์ ๋๋ค.
# ๋ฆฌ์คํธ๋ก ๋ณ๊ฒฝ
x = list(kbo["ํ๋ช
"])
y = list(kbo["์น"])
bar = (
Bar()
.add_xaxis(x) # x์ถ
.add_yaxis("์น๋ฆฌ", y, label_opts = False, color = "LightCoral") # color ์ต์
์ผ๋ก ์์์ ๋ณ๊ฒฝ
.set_global_opts(title_opts = opts.TitleOpts(title = "2022๋
KBO ํ์์", subtitle = "์ ๊ท์์ฆ"),
xaxis_opts = opts.AxisOpts(name = "์ฐธ์ฌ ํ๋ช
"), # X์ถ ์ด๋ฆ
yaxis_opts = opts.AxisOpts(name = "์น๋ฆฌ ํ์",
axislabel_opts = opts.LabelOpts(formatter="{value} (๊ฒฝ๊ธฐ)")),
datazoom_opts=[opts.DataZoomOpts(), opts.DataZoomOpts(type_="inside")]) # ๊ทธ๋ํ๋ฅผ ์ค/์์ ํ ์ ์๋ค
.render_notebook() # ์ฃผํผํฐ ๋
ธํธ๋ถ์ ๊ทธ๋ํ๋ฅผ ๋ฐ๋ก ์ถ๋ ฅ
)
bar
๊ทธ๋ํ ์ค๋ฅธ์ชฝ ์๋จ์ ํ์ํ ๊ธฐ๋ฅ์ ๋ด์ ํด๋ฐ์ค๋ฅผ ๋ง๋๋ ์ต์ ์ ๋๋ค.
(๋ค๋ง, ํด ๊ธฐ๋ฅ๋ค์ด ์ค๊ตญ์ด๋ก ์ถ๋ ฅ๋๊ณ ์๋ค์.)
# ๋ฆฌ์คํธ๋ก ๋ณ๊ฒฝ
x = list(kbo["ํ๋ช
"])
y = list(kbo["์น"])
bar = (
Bar()
.add_xaxis(x) # x์ถ
.add_yaxis("์น๋ฆฌ", y, label_opts = False, color = "LightCoral") # color ์ต์
์ผ๋ก ์์์ ๋ณ๊ฒฝ
.set_global_opts(title_opts = opts.TitleOpts(title = "2022๋
KBO ํ์์", subtitle = "์ ๊ท์์ฆ"),
xaxis_opts = opts.AxisOpts(name = "์ฐธ์ฌ ํ๋ช
"), # X์ถ ์ด๋ฆ
yaxis_opts = opts.AxisOpts(name = "์น๋ฆฌ ํ์",
axislabel_opts = opts.LabelOpts(formatter="{value} (๊ฒฝ๊ธฐ)")),
datazoom_opts=[opts.DataZoomOpts(), opts.DataZoomOpts(type_="inside")],
toolbox_opts = opts.ToolboxOpts()) # ๊ทธ๋ํ ์ค๋ฅธ์ชฝ ์์ ํด๋ฐ์ค๋ฅผ ์์ฑํ๋ค.
.render_notebook() # ์ฃผํผํฐ ๋
ธํธ๋ถ์ ๊ทธ๋ํ๋ฅผ ๋ฐ๋ก ์ถ๋ ฅ
)
bar
์ด๋ฒ์๋ ์น๋ฆฌ์ ํจ๋ฐฐ๋ฅผ ๊ฐ์ด ๋ง๋ ๊ทธ๋ํ๋ก ํํํด๋ณด๊ฒ ์ต๋๋ค.
# ๋ฆฌ์คํธ๋ก ๋ณ๊ฒฝ
x = list(kbo["ํ๋ช
"])
y = list(kbo["์น"])
z = list(kbo["ํจ"]) # ํจ ์ปฌ๋ผ์ ๋ฆฌ์คํธ๋ก ์์ฑ
double_bar = (
Bar()
.add_xaxis(x)
.add_yaxis("์น๋ฆฌ", y)
.add_yaxis("ํจ๋ฐฐ", z) # z๋ฅผ y์ถ์ ์ถ๊ฐ
.set_global_opts(title_opts = opts.TitleOpts(title = "2022๋
KBO ํ์์", # ์ ๋ชฉ
subtitle = "์ ๊ท์์ฆ")) # ์์ ๋ชฉ
.render_notebook()
)
double_bar
์๋จ ์ค์์ ์น๋ฆฌ/ํจ๋ฐฐ๋ฅผ ๋๋ฌ์ฃผ์๋ฉด ํด๋น ํญ๋ชฉ์ ๊ทธ๋ํ์์ ์ฌ๋ผ์ง๋ ๊ฒ์ ํ์ธํ์ค ์ ์์ต๋๋ค.
๋ง๋ ์ฌ์ด์ ๊ฐ๊ฒฉ์ ์กฐ์ ํ๊ณ ์ถ๋ค๋ฉด gap ์ต์ ์ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค.
# ๋ฆฌ์คํธ๋ก ๋ณ๊ฒฝ
x = list(kbo["ํ๋ช
"])
y = list(kbo["์น"])
z = list(kbo["ํจ"])
double_bar = (
Bar()
.add_xaxis(x)
.add_yaxis("์น๋ฆฌ", y, gap="0%") # ๋ง๋ ๊ฐ๊ฒฉ ์กฐ์
.add_yaxis("ํจ๋ฐฐ", z, gap="0%") # ๋ง๋ ๊ฐ๊ฒฉ ์กฐ์
.set_global_opts(title_opts = opts.TitleOpts(title = "2022๋
KBO ํ์์", # ์ ๋ชฉ
subtitle = "์ ๊ท์์ฆ")) # ์์ ๋ชฉ
.render_notebook()
)
double_bar
๋์ ๋ง๋ ๊ทธ๋ํ๋ก ํํํ๊ณ ์ถ๋ค๋ฉด stack ์ต์ ์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
# ๋ฆฌ์คํธ๋ก ๋ณ๊ฒฝ
x = list(kbo["ํ๋ช
"])
y = list(kbo["์น"])
z = list(kbo["ํจ"])
a = list(kbo["๋ฌด"])
double_bar = (
Bar()
.add_xaxis(x)
.add_yaxis("์น๋ฆฌ", y, label_opts = False, color = "LightBlue", stack="stack") # stack ์ต์
.add_yaxis("ํจ๋ฐฐ", z, label_opts = False, color = "LemonChiffon", stack="stack") # stack ์ต์
.add_yaxis("๋ฌด", a, label_opts = False, color = "LightCoral", stack="stack") # stack ์ต์
.set_global_opts(title_opts = opts.TitleOpts(title = "2022๋
KBO ํ์์",
subtitle = "์ ๊ท์์ฆ"))
.render_notebook()
)
double_bar
์ค๋์ ์ฌ๊ธฐ๊น์ง ์ค๋นํ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค.