1. Plotly์์ ์ธํฐ๋ํฐ๋ธ ๊ทธ๋ํ ๋ด๋ณด๋ด๊ธฐ
๋ฐ์ดํฐ ์๊ฐํ๋ฅผ ์ฌ๋ํ๋ ์น๊ตฌ๋ค๊ณผ ๊ทธ๋ํ ์ํฐ์คํธ ์ฌ๋ฌ๋ถ, ํ์ํด! ์ค๋์ ๋ฐ์ดํฐ ์๊ฐํ์ ๋ง์ง๋ง ๊ฐ์๋ก, ๋ฉ์ง๊ณ ์ ๋ณด ๊ฐ๋ํ ๊ทธ๋ํ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๋ด๋ณด๋ด๊ณ ๋ฌธ์์ ํตํฉํ๋ ๋ฒ์ ๋ฐฐ์๋ณด์. ๋น์ ์ ์์ฌ๋ฅผ ๋๋ผ๊ฒ ํ๊ณ ์ถ๋ค๋ฉด, ๋ฉ์ง ๋ถ์๋ฟ ์๋๋ผ PowerPoint๋ฟ๋ง ์๋๋ผ HTML ํ์ด์ง์๋ ๊ทธ๋ํ๋ฅผ ๋ฃ์ ์ ์๋ค๋ ๊ฑธ ๋ณด์ฌ์ฃผ๋ฉด ์ค๋์ ๋น์ ์ ํ์ด์ ๋ ์ด๋ค!
Plotly ๋ด๋ณด๋ด๊ธฐ ์ฃผ์ ํฌ๋งท
Plotly๋ ์ฌ๋ฌ ๋ด๋ณด๋ด๊ธฐ ํฌ๋งท์ ์ง์ํด:
- HTML โ ๋ธ๋ผ์ฐ์ ์์ ์ด ์ ์๋ ์ธํฐ๋ํฐ๋ธ ๊ทธ๋ํ๋ฅผ ๋ง๋๋ ๋ฐ ์ ํฉํจ.
- PNG, JPG, PDF, SVG โ ๊ณ ํ์ง์ ์ ์ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๊ธฐ ์ํ ํฌ๋งท
- JSON โ JSON ๊ตฌ์กฐ๋ก ๊ทธ๋ํ๋ฅผ ์ ์ฅํ์ฌ ์์คํ ๊ฐ ๋ฐ์ดํฐ ์ ๋ฌ์ ์ ์ฉํจ.
๋ด๋ณด๋ด๊ธฐ ๋ฐฉ๋ฒ
Plotly๋ ์ธํฐ๋ํฐ๋ธํ๊ณ ๋์ ์ธ ๊ทธ๋ํ ๋ง๋ค๊ธฐ๋ก ์ ๋ช ํด. ๊ทธ๋ฐ๋ฐ ์ด๋ป๊ฒ Python์ด ์ค์น๋ ๋ ธํธ๋ถ์ ๋ค ๋ค๊ณ ๋ค๋์ง ์๊ณ ๋ ์ธ์์ ๊ณต์ ํ ์ ์์๊น?
Plotly๋ HTML๋ก ๊ทธ๋ํ๋ฅผ ๋ด๋ณด๋ผ ์ ์์ด. HTML ํ์ผ์ ๋๋ฃ์๊ฒ ๋ณด๋ด๋ฉด ๊ทธ๋ค์ ๋ธ๋ผ์ฐ์ ์์ ๊ทธ๋ํ์ ์ํธ์์ฉํ ์ ์์ด. ๋ด๋ณด๋ด๊ธฐ๋ plotly.io.write_html
๋ฉ์๋๋ฅผ ์ฌ์ฉํด. ์๋ฅผ ๋ค์ด:
import plotly.express as px
import plotly.io as pio
# ๊ฐ๋จํ ์ธํฐ๋ํฐ๋ธ ๊ทธ๋ํ ์์ฑ
df = px.data.iris() # irises ๋ฐ์ดํฐ์
fig = px.scatter(df, x="sepal_width", y="sepal_length", color="species")
# ๊ทธ๋ํ๋ฅผ HTML๋ก ๋ด๋ณด๋ด๊ธฐ
pio.write_html(fig, file='grafik.html', auto_open=True)
auto_open=True
๋งค๊ฐ๋ณ์๋ ์ ์ฅ ํ ๋ธ๋ผ์ฐ์ ์์ ํ์ผ์ ๋ฐ๋ก ์ด์ด์ค. ๋๋ฃ์๊ฒ ๋ณด์ฌ์ฃผ๊ฑฐ๋, ์ ์ฅ์ด ์ ๋๋ก ๋์๋์ง ํ์ธํ๊ณ ์ถ์ ๋ ์์ฃผ ํธ๋ฆฌํด.
๋ค๋ฅธ ํฌ๋งท์ผ๋ก ๋ด๋ณด๋ด๊ธฐ
Plotly๋ PNG, JPEG, SVG ๋ฑ์ ์ด๋ฏธ์ง ํฌ๋งท์ผ๋ก๋ ๋ด๋ณด๋ด๊ธฐ๊ฐ ๊ฐ๋ฅํด. ์ด๋ฅผ ์ํด plotly.io.write_image
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋๋ฐ, kaleido
๋ผ๋ ์ถ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํด. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ด๋ฏธ์ง๋ฅผ ๋ ๋๋งํด์ค:
pip install -U kaleido
์ด์ ๊ทธ๋ํ๋ฅผ ๋ด๋ณด๋ด๋ณด์:
# PNG ํ์์ผ๋ก ๋ด๋ณด๋ด๊ธฐ
pio.write_image(fig, file='grafik.png')
# JPG ํ์์ผ๋ก ๋ด๋ณด๋ด๊ธฐ
pio.write_image(fig, file='grafik.jpg', width=800, height=400, scale=2)
2. ๋ณด๊ณ ์์ ๊ทธ๋ํ ํฌํจํ๊ธฐ
๋ด๋ณด๋ธ ๊ทธ๋ํ๋ ๋ถ์ ๋ณด๊ณ ์์ ํ์ ์์๊ฐ ๋ ์ ์์ด. ์๋ฅผ ๋ค์ด, ๋ด๋ณด๋ธ HTML ๊ทธ๋ํ๋ ํ์ฌ ํฌํธ์ ์ ๋ก๋ํ๊ฑฐ๋ ์จ๋น๋์์ ๋ฐํํ ๋ณด๊ณ ์์ ์ฝ๊ฒ ์ฝ์ ํ ์ ์์ด.
Word ๋ฐ PDF ๋ฌธ์์ ๊ทธ๋ํ ์ฝ์
Microsoft Word ๋๋ PDF ๋ฌธ์์ ๊ทธ๋ํ๋ฅผ ํตํฉํ๋ ค๋ฉด, ๊ทธ๋ํ๋ฅผ PNG ๋๋ JPG ํ์์ผ๋ก ์ ์ฅํ ๋ค์ ์ด๋ฏธ์ง๋ฅผ ์ฝ์ ํ๋ฉด ๋ผ. ํ์ผ์ ๋ฌธ์๋ก ๋๋๊ทธํ๊ฑฐ๋, Word์ PDF ํธ์ง๊ธฐ์ ์ฝ์ ๊ธฐ๋ฅ์ ํ์ฉํ๋ฉด ๋ผ.
fig.write_image("sales_chart.pdf")
PDF๋ ๊ณ ํ์ง ๊ทธ๋ํ ์ธ์์ ๋ฐฐํฌ์ ํธ๋ฆฌํด. Plotly์์ kaleido
๋ฅผ ์ฌ์ฉํด PDF๋ก ๋ด๋ณด๋ผ ๊ฒฝ์ฐ, ํ์ผ ํ์๋ง ์ง์ ํ๋ฉด ๋ผ.
์ธํฐ๋ํฐ๋ธ ๊ทธ๋ํ๋ฅผ ์น ๋ฌธ์์ ํตํฉ
HTML ํ์์ Plotly ์ธํฐ๋ํฐ๋ธ ๊ทธ๋ํ๋ ์น ํ์ด์ง์ ์ฝ์ ํ ์ ์์ด. ์ด๋ ์จ๋ผ์ธ ๋ณด๊ณ ์์ ์น ๋ฌธ์์ ํนํ ์ ์ฉํด. ๊ทธ๋ํ๋ฅผ ํฌํจํ๋ ค๋ฉด HTML ํ์ผ ๋งํฌ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ HTML ์ฝ๋๋ฅผ ์น ํ์ด์ง์ ์ง์ ์ ๊ณตํฉ๋๋ค.
์ธํฐ๋ํฐ๋ธ ๊ทธ๋ํ๋ HTML ํ์ด์ง์ iframe์ ์ฌ์ฉํด ํฌํจํ ์ ์์ด:
<iframe src="grafik.html" width="800" height="600"></iframe>
์ด๋ฅผ ํตํด ๊ทธ๋ํ๋ฅผ ํ์ด์ง์ ํฌํจ์์ผ ์ํธ์์ฉ์ด ๊ฐ๋ฅํ๊ฒ ๋ง๋ค์ด ์ค.
JSON์ผ๋ก ๊ทธ๋ํ ๋ด๋ณด๋ด๊ธฐ
JSON ํฌ๋งท์ ๋ฐ์ดํฐ๋ฅผ JSON ํ์์ผ๋ก ์ ์ฅํด ์์คํ ๊ฐ ๋ฐ์ดํฐ ์ ๋ฌ์ ์ ์ฉํ๋ฉฐ, ๋์ค์ Plotly๋ก ๋ค์ ๊ฐ์ ธ์ ๋ณด์ฌ์ค ์๋ ์์ด.
# ๊ทธ๋ํ๋ฅผ JSON์ผ๋ก ์ ์ฅํ๊ธฐ
fig.write_json("sales_chart.json")
๋ณด๊ณ ์ ์ ํ๋ณ ํฌ๋งท ๋ฐ ์ค์ ์ ํ
- ์ถํ ๋ฐ ์ธ์์ฉ: ๊ณ ํด์๋ (
dpi=300
) PNG ๋๋ PDF ํฌ๋งท์ ์ฌ์ฉํด, ์ด๋ฏธ์ง๊ฐ ์ ๋ช ํ๊ณ ๊ณ ํ์ง์์ ์ ์ง. - ์น ๋ฌธ์ ๋ฐ ํ๋ ์ ํ ์ด์ ์ฉ: PNG์ SVG ํฌ๋งท์ ์น ๋ฌธ์์ ์ด์์ ์ด๋ฉฐ, SVG๋ ํ์ฅ ๊ฐ๋ฅํ๋ค๋ ์ ์์ ์ ๋ฆฌํจ.
- ์ธํฐ๋ํฐ๋ธ ๋ณด๊ณ ์์ฉ: Plotly ์ธํฐ๋ํฐ๋ธ ๊ทธ๋ํ๋ฅผ HTML ํ์์ผ๋ก ์ ์ฅํด ์น ํ์ด์ง๋ ์จ๋ผ์ธ ๋ฌธ์์ ํตํฉ.
3. ์์
์ง์์ ๊ฐํํ๊ธฐ ์ํด, ์ธํฐ๋ํฐ๋ธ ๊ทธ๋ํ๋ฅผ ๋ง๋ค์ด๋ด๊ณ ์ด๋ฅผ ๊ฐ๋จํ HTML ๋ฌธ์์ ํตํฉํด ๋ณด์.
๊ทธ๋ํ ์์ฑ:
import plotly.express as px
import plotly.io as pio
df = px.data.tips()
fig = px.bar(df, x='day', y='total_bill', color='sex', barmode='group')
pio.write_html(fig, file='tips_graph.html', auto_open=True)
๊ทธ๋ํ ํฌํจ HTML ๋ฌธ์ ์์ฑ:
๋ค์ ์ฝ๋๋ฅผ index.html
๋ก ์ ์ฅํด:
<!DOCTYPE html>
<html lang="ko-KR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ํ ๋ณด๊ณ ์</title>
</head>
<body>
<h1>์์ผ๋ณ ํ ๋ถ์</h1>
<p>์๋๋ ์์ผ ๋ฐ ์ฑ๋ณ์ ๋ฐ๋ผ ์ด ํ์ ๋ณด์ฌ์ฃผ๋ ์ธํฐ๋ํฐ๋ธ ๊ทธ๋ํ์
๋๋ค.</p>
<iframe src="tips_graph.html" width="900" height="500" frameBorder="0"></iframe>
</body>
</html>
๋ฌธ์ ๋ณด๊ธฐ:
index.html
์ ๋ธ๋ผ์ฐ์ ์์ ์ด์ด ๊ฒฐ๊ณผ๋ฅผ ์ฆ๊ฒจ๋ผ! ๋ฐฉ๊ธ ๋๋ฃ๋ ์ธํฐ๋ท์ ๊ฒ์ํ ์ ์๋ ๋ณด๊ณ ์๋ฅผ ๋ง๋ค์์ด.
์ธํฐ๋ํฐ๋ธ ๊ทธ๋ํ๋ ๋ฉ์์ ๋ฟ ์๋๋ผ, ๋ฐ์ดํฐ๋ฅผ ๊น๊ฒ ๋ถ์ํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํด. ์ด๋ฅผ ํ์ฉํด ๋ณด๊ณ ์๋ฅผ ๋ ์ธ์์ ์ด๊ณ ๋ค์ฌ๋ค๋ฅํ๊ฒ ๋ง๋ค์ด๋ณด์.
Plotly์ Matplotlib ํ์ต์ ๋ง์น๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ๋ฉ์ง๊ฒ ์๊ฐํํด์ ์ต๋์ ํจ์ฉ์ฑ์ ์ป๋ ๊ฒ์ด ํ๋์ ์์ ์์ ๊ฐ์กฐํ๊ณ ์ถ์ด. ๋ฐฐ์ด ๋ด์ฉ์ ํ์ฉํด์ ๋๋ง์ ๋ฉ์ง ์๊ฐํ ๊ฑธ์์ ๋ง๋ค์ด๋ณด๊ธธ ๋ฐ๋ผ. ํ์ด์ ๋น์ด!
GO TO FULL VERSION