(1-3) Python๊ณผ Matplotlib

210809

1-3. Python๊ณผ Matplotlib

๋ชจ๋“  ์‹ค์Šต ์ฝ”๋“œ์˜ ์ถœ์ฒ˜๋Š” ์—ฌ๊ธฐ์ž…๋‹ˆ๋‹ค

1. ์™œ Matplotlib์ผ๊นŒ?

  • Matplotlib์€ Python์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ.

  • ํ˜„์žฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๋ถ„์„ ๋ฐ ๋จธ์‹ ๋Ÿฌ๋‹/๋”ฅ๋Ÿฌ๋‹์€ Python์—์„œ ์ด๋ค„์ง€๊ณ  ์žˆ๋‹ค.

  • numpy์™€ scipy๋ฅผ ๋ฒ ์ด์Šค๋กœ ํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ˜ธํ™˜์„ฑ์ด ์ข‹๋‹ค.

    • Scikit-Learn, PyTorch, Tensorflow

    • Pandas

  • ๋‹ค์–‘ํ•œ ์‹œ๊ฐํ™” ๋ฐฉ๋ฒ•๋ก ์„ ์ œ๊ณตํ•œ๋‹ค.

    • ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„

    • ์„ ๊ทธ๋ž˜ํ”„

    • ์‚ฐ์ ๋„

    • 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?