(1-3) Python๊ณผ Matplotlib
210809
1-3. Python๊ณผ Matplotlib
๋ชจ๋ ์ค์ต ์ฝ๋์ ์ถ์ฒ๋ ์ฌ๊ธฐ์ ๋๋ค
1. ์ Matplotlib์ผ๊น?
Matplotlib์ Python์์ ์ฌ์ฉํ ์ ์๋ ์๊ฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ.ํ์ฌ ์ฌ์ฉ๋๊ณ ์๋ ๋ค์ํ ๋ฐ์ดํฐ ๋ถ์ ๋ฐ ๋จธ์ ๋ฌ๋/๋ฅ๋ฌ๋์ Python์์ ์ด๋ค์ง๊ณ ์๋ค.
numpy์scipy๋ฅผ ๋ฒ ์ด์ค๋ก ํ์ฌ ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํธํ์ฑ์ด ์ข๋ค.Scikit-Learn,PyTorch,TensorflowPandas
๋ค์ํ ์๊ฐํ ๋ฐฉ๋ฒ๋ก ์ ์ ๊ณตํ๋ค.
๋ง๋๊ทธ๋ํ
์ ๊ทธ๋ํ
์ฐ์ ๋
ETC
๊ทธ ์ธ์๋
Seaborn,Plotly,Bokeh,Altair๋ฑ์ ์๊ฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์กด์ฌMatplotlib๊ฐ ๋ฒ์ฉ์ฑ์ด ์ ์ผ ๋๊ณ , base๊ฐ ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
1-1. Import Library
matplotlib์ ์ค์ฌ์ mpl๋ก ์ฝ๋ ์์์ ์ฌ์ฉํฉ๋๋ค.
๋ง์ฝ ๋ฒ์ ์ด ๋ค๋ฅด๋ค๋ฉด pip install matplotlib ๋๋ conda install matplotlib์ผ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ค์ด๋ฐ์ผ์๋ฉด ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ pyplot ๋ชจ๋๋ ํจ๊ป ๋ถ๋ฌ์ต๋๋ค. (์ด์ ์๋ pylab์ด ์์์ง๋ง ํ์ฌ๋ ์ง์์ํจ)
matplotlib์๋ ํ ์คํธ์ฉ ๋ชจ๋, ๋ ์ง์ฉ ๋ชจ๋, ๋ํ์ฉ ๋ชจ๋ ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ๊ทธ ์ค
pyplot ์
2. ๊ธฐ๋ณธ Plot
2-1. Figure์ Axes
matplotlib์์ ๊ทธ๋ฆฌ๋ ์๊ฐํ๋ Figure๋ผ๋ ํฐ ํ์ Ax๋ผ๋ ์๋ธํ๋กฏ์ ์ถ๊ฐํด์ ๋ง๋ ๋ค.
plt.show()๋ plt์ ๊ทธ๋ ค์ง ๊ฒ์ ์ถ๋ ฅํด๋ฌ๋ ๋ป.jupyter๋ colab์์๋ 1๋ฒ ๋ผ์ธ ์ฝ๋๋ง ์์ด๋ ์ถ๋ ฅ์ด๋๋ค.
ipython ํ์ผ์ด์ด์ ๊ทธ๋ ๋ค
%matplotlib ๋ผ๋ ์ธ๋ผ์ธ ์ฝ๋๋ ํ์์ ์ธ ๊ฒ์ ์๋๋ค
๋ค๋ง Figure๋ ํฐ ํ์ด๋ผ ์๋ธํ๋กฏ์ ์ต์ 1๊ฐ ์ด์ ์ถ๊ฐํด์ผ ํ๊ณ , ์ถ๊ฐํ๋ ๋ค์ํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
3.์ฐจํธ์ ์์/3.Facet์์ ๊ตฌ์ฒด์ ์ผ๋ก ๋ค๋ฃฐ ์์
๊ทธ๋ํ์ ์ฌ์ด์ฆ๋ figure์ ์ฌ์ด์ฆ๋ก ์๋ธํ๋กฏ ax์ ์ฌ์ด์ฆ๋ฅผ ์กฐ์ ํฉ๋๋ค.
๊ฐ๋ก, ์ธ๋ก ๊ธธ์ด(inch ๋จ์)๋ฅผ tupleํํ๋ก figsize ํ๋ผ๋ฏธํฐ์ ์ ๋ฌํ์ฌ ์กฐ์ ํฉ๋๋ค.
๋ ธํธ๋ถ ํ๊ฒฝ์์๋ ๋น์จ๋ก ์๊ฐํ๊ณ ์งํํ๋ฉด ํธ๋ฆฌํฉ๋๋ค.
figsize=(12, 7)์ ๊ฐ๋ก๋ฅผ 12์ธ์น, ์ธ๋ก๋ฅผ 7์ธ์น๋ก ์ค์ ํ๋ผ๋ ๋ป๋ชจ๋ํฐ ํฌ๊ธฐ์ ์ฅฌํผํฐ ํฌ๊ธฐ๊ฐ ๋ชจ๋ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ฌ์ด์ฆ๊ฐ ํฌ๊ฒ ์ค์ํ์ง๋ ์๋ค. ๋จ์ํ 12 : 7 ์ด๋ผ๋ ๋น์จ๋ก ์ธ์งํ ๊ฒ
fig.set_facecolor('black')์ ์์ฑํด์ฃผ๋ฉด fig์ ํ ๋๋ฆฌ๊ฐ ๊ฒ์์์ผ๋ก ์น ํด์ง๋ค.
2๊ฐ ์ด์ ๊ทธ๋ฆฌ๊ณ ์ถ๋ค๋ฉด ์์น๋ฅผ ์ง์ ํด์ฃผ์ด์ผ ํฉ๋๋ค.

fig.add_subplot(121)์์121์ ์ธ๋ก๋ฅผ ํ์นธ, ๊ฐ๋ก๋ฅผ ๋์นธ์ผ๋ก ๋๋์์ ๋ ์ฒซ๋ฒ์งธ์ ์์น์ํค๋ผ๋ ๋ป์ด๋ค์ ๋ก ์ธ๋ฑ์ค๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ํท๊ฐ๋ฆด ์ ์๋ค.
๋ํ 121์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ (1, 2, 1)๋ก ์ธ ์ ์๋ค.

2-2. plt๋ก ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ
๋ฆฌ์คํธ [1, 2, 3] ๋ฐ์ดํฐ๋ฅผ ax์ ๊ทธ๋ฆฐ๋ค๋ฉด ์ด๋ป๊ฒ ๊ทธ๋ฆด ์ ์์๊น์?
์ฐ์ ์ 2์ฅ.๊ธฐ๋ณธ์ฐจํธ์์ ๋ค๋ฃจ๋๋กํ๊ณ ์ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฌ๋ plot์ ๊ทธ๋ ค๋ณด๊ฒ์ต๋๋ค.

๊ทธ๋ํ๊ฐ (์ธ๋ฑ์ค, ๊ฐ) ์ ํํ๋ก ๊ทธ๋ํ๊ฐ ๋ง๋ค์ด์ก๋ค.
2๊ฐ๋ฅผ ์์๋๋ก ๊ทธ๋ฆฐ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๊ทธ๋ฆด ์ ์์ต๋๋ค.

plt๋ก ๊ทธ๋ฆฌ๋ ๊ทธ๋ํ๋ค์ ์์ฐจ์ ์ผ๋ก ๊ทธ๋ฆฌ๊ธฐ์ ์ข์ต๋๋ค.
ํ์ง๋ง ํ๋ก๊ทธ๋๋ฐ ์คํ์ผ์ ๋ฐ๋ผ (๋ณดํธ์ ์ธ Python)์์๋ ๊ผญ ์์ฐจ์ ์ผ๋ก ๊ทธ๋ฆฌ์ง๋ง์ ์์ต๋๋ค.
์ข ๋ pythonicํ๊ฒ ๊ตฌํ์ ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น์?
2-3. ์๋ธํ๋กฏ ๊ฐ์ฒด ax์ ๊ทธ๋ฆฌ๊ธฐ
ax ๊ฐ์ฒด์ ์ง์ ๊ทธ๋ฆฌ๋ฉด ๋ฉ๋๋ค. ์ด๋ ๊ฒ Matplotlib์ ๊ทธ๋ฆด ๋ ๋ ๊ฐ์ง API๋ฅผ ๋ฐ๋ก ์ง์ํฉ๋๋ค.
Pyplot API : ์์ฐจ์ ๋ฐฉ๋ฒ
๊ฐ์ฒด์งํฅ(Object-Oriented) API : ๊ทธ๋ํ์์ ๊ฐ ๊ฐ์ฒด์ ๋ํด ์ง์ ์ ์ผ๋ก ์์ ํ๋ ๋ฐฉ๋ฒ
ํธํ ์ปค์คํ ์ ์ํด ๊ฐ์ ๋ฐ ์๋ฃ์์๋ ๊ฐ๋ฅํ ๊ฐ์ฒด์งํฅ API๋ฅผ ์ฌ์ฉํฉ๋๋ค.

plt๋ก ๊ทธ๋ฆฌ๋ค plt.gcf().get_axes()๋ก ๋ค์ ์๋ธํ๋กฏ ๊ฐ์ฒด๋ฅผ ๋ฐ์์ ์ฌ์ฉํ ์๋ ์์
3. Plot์ ์์๋ค ์์๋ณด๊ธฐ
3-1. ํ ์๋ธํ๋กฏ์์ ์ฌ๋ฌ ๊ฐ ๊ทธ๋ฆฌ๊ธฐ
ax์๋ ๋์์ ๋ค์ํ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆด ์ ์์ต๋๋ค.

๋์์ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฌ๊ฒ ๋๋ฉด ์์์ด ์๋์ ์ผ๋ก ๊ตฌ๋ถ๋ฉ๋๋ค.

๋ค๋ฅธ ์ข ๋ฅ์ ๊ทธ๋ํ๊ฐ ์ถ๊ฐ๋๋ค๋ฉด ๋ค์ ํ๋์์ผ๋ก ์์ํ๊ธฐ์ ์์ ๋ช ์ํด์ฃผ๋ ๊ฒ ์ข์ต๋๋ค.
๊ฐ์ ๊ทธ๋ํ๋ ์์ด ๊ตฌ๋ถ๋๋ค.
3-2. ์์ ์ง์ ํ๊ธฐ
์์ ์ง์ ๋ช
์ํ ์ ์๊ณ , ์ผ๋ฐ์ ์ผ๋ก color ํ๋ผ๋ฏธํฐ๋ฅผ ํตํด ์ ๋ฌํฉ๋๋ค.
color๋ฅผ ๋ช ์ํ๋ 3๊ฐ์ง ๋ฐฉ๋ฒ์ ์ฝ๋๋ฅผ ํตํด ์ดํด๋ด ์๋ค.
์ฒซ๋ฒ์งธ ๋ฐฉ๋ฒ์ ์์ ๊ณ์ด์ด ๋ง์ ์์ด ํํ๊ณ , ์ผ๋ถ๋ง ์๋ค
๋๋ฒ์งธ ๋ฐฉ๋ฒ์ color name์ ์ธ์ด๋ค๋ฉด ์ฌ์ฉ ๊ฐ๋ฅ

์์ ๋ํ ๋ค์ํ ์กฐํฉ์ ์ง์ ํ๋ฉด ์ ์ผ ์ข๊ฒ ์ง๋ง rgb hex๊ฐ์ ๊ฒ์ํ๋ ๋ฐฉ๋ฒ์ ์ถ์ฒ!!
๋ ์์ธํ ๋ด์ฉ์ ์ฐจํธ์ ์์ - 2. color์์
3-3. ํ
์คํธ ์ฌ์ฉํ๊ธฐ
์ ๋ณด๋ฅผ ์ถ๊ฐํ๊ธฐ ์ํด ํ ์คํธ๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
๋ ์์ธํ ๋ด์ฉ์ 3.์ฐจํธ์ ์์ > 1. Text์์ ๊ณ์
์ฐ์ label์ ๋ด ์๋ค.

์๊ฐํ์์ ๋๋ฌ๋์ง ์์ต๋๋ค. ๋ฒ๋ก(legend)๋ฅผ ์ถ๊ฐํด๋ณด๊ฒ ์ต๋๋ค.

ax.legend()๋ ๋น๊ต์ ๊ทธ๋ํ๋ฅผ ๋ณด๊ธฐ์ ์์ด ์์ผ์ ๋ฐฉํด๋์ง ์๋ ๋ถ๋ถ์ ์๋์ผ๋ก ์์ฑ๋๋ค.๊ทธ๋ํ ์ธ๋ถ์ ์์ฑํ ์๋ ์๋ค. ์ถํ ์์ ์ ๋ค์ ๋ค๋ฃธ
๋ฒ๋ก๋ฅผ ์ถ๊ฐํ๋ฉด ํด๋น ๊ทธ๋ํ์ ๋งค์นญ๋๋ ํ ์คํธ ์ ๋ณด๊ฐ ์ถ๊ฐ๋ฉ๋๋ค.
์ฌ๊ธฐ์ ์ ๋ชฉ(title)์ ์ถ๊ฐํด๋ณด๊ฒ ์ต๋๋ค.

ax๋ง๋ค
ax.set_title์ ์ด์ฉํด ์ด๋ฆ์ ์ง์ ์ ์๋ค.fig์ ์ด๋ฆ์
fig.suptitle('fig')๋ฅผ ์ด์ ์ฉํด์ ์ง์ ์ ์๋ค.sup์ super์ ์ฝ์ด์ด๋ค.
ax์์ ํน์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ .set_{}() ํํ์ ๋ฉ์๋๊ฐ ๋ง์ต๋๋ค. ์์๋ก์๋ค :)
set์ผ๋ก ์ธํ
ํ๋ ์ ๋ณด๋ค์ ๋ฐ๋๋ก ํด๋น ์ ๋ณด๋ฅผ ๋ฐ์์ค๋ ๊ฒฝ์ฐ์๋ .get_{}() ํํ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.

์ถ์ ticks์ ticklabels๋ก ๊ตฌ๋ถ๋ฉ๋๋ค.
ticks์ ์ถ์ ์ ํ๋ ์ ์์น๋ฅผ ์ง์ ํฉ๋๋ค.

ticklabels์ ์ถ์ ์ ํ๋ ํ
์คํธ๋ฅผ ์์ ํฉ๋๋ค.

๋ง์ง๋ง์ผ๋ก๋ ์ผ๋ฐ์ ์ธ ํ ์คํธ๋ฅผ ์ถ๊ฐํ๋ 2๊ฐ์ง๊ฐ ์์ต๋๋ค.

ax.text๋ ์์น๋ x์ y๋ก ๊ทธ๋ฆฌ๊ณ ํ ์คํธ๋ s๋ก ์ ๋ฌํ๋ค

ax.annotate๋ xy๋ฅผ ํํํํ๋ก ์ ๋ฌํ๋ค
text์ annotate์ ์ฐจ์ด
text๋ ์ํ๋ ์์น์ ํ ์คํธ๋ฅผ ์ ์๋ค
annotate ์ํ๋ ์์น์ ํ ์คํธ๋ฅผ ์ง์ ํ๋ค.
annotate๋ ํ์ดํ ๋ฑ์ ์ถ๊ฐํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. (์ธ์ธํ ์ธํ ์ ์ถํ์ ์์๋ณด๊ฒ ์ต๋๋ค.)

Last updated
Was this helpful?