๐Ÿ–ฅ๏ธ[Python] 10-1. Matplotlib ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (๊ธฐ๋ณธ ์„ค์ •)

thisk336ยท2023๋…„ 10์›” 1์ผ
0

Python

๋ชฉ๋ก ๋ณด๊ธฐ
16/17
post-thumbnail

Matplotlib

  • ํŒŒ์ด์ฌ ์˜คํ”ˆ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘์— ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์‹œ๊ฐํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.
  • 2002๋…„๋ถ€ํ„ฐ ๋งŒ๋“ค์–ด์กŒ์œผ๋ฉฐ, MATLAB์˜ ๊ธฐ๋Šฅ๋“ค์„ ํŒŒ์ด์ฌ์œผ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ์ปจ์…‰์œผ๋กœ ์‹œ์ž‘๋˜์—ˆ๋‹ค.
  • ๊ฐ์ข… ๋…ผ๋ฌธ์—์„œ figure๋ฅผ ๊ทธ๋ฆด ๋•Œ ์‚ฌ์šฉ๋  ๋งŒํผ ๊น”๋”ํ•˜๊ฒŒ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ ค์ค€๋‹ค.
  • ํฌ๊ฒŒ pyplot์„ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ OOP-style๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.
  • pandas์˜ ๊ฐ์ฒด์—์„œ ๋ฉ”์„œ๋“œ๋กœ matplotlib์˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
import matplotlib.pyplot as plt

plt.plot([1, 2, 3, 4])
plt.show()

๊ทธ๋ž˜ํ”„์˜ ์ƒ‰์ƒ ์„ค์ •

  • ๊ทธ๋ž˜ํ”„์—์„œ ์ƒ‰์ƒ์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
์ƒ‰์ƒ์ž…๋ ฅ์•ฝ์–ด
ํŒŒ๋ž€์ƒ‰blueb
์ดˆ๋ก์ƒ‰greeng
๋นจ๊ฐ„์ƒ‰redr
๋…ธ๋ž€์ƒ‰greeny
๊ฒ€์€์ƒ‰blackk
์ฒญ๋ก์ƒ‰cyanc
ํฐ์ƒ‰whitew
์žํ™์ƒ‰magentam

์ด ์™ธ์—๋„ css ์ƒ‰์ƒ์ด๋‚˜ Tableau ์ƒ‰์ƒ ๋“ฑ ๋‹ค์–‘ํ•œ ์ƒ‰์ƒ์„ ์ง€์›ํ•œ๋‹ค.

๋งˆ์ปค ๋ฐ ์„  ์Šคํƒ€์ผ

  • ๋งˆ์ปค๋ž€ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ธฐํ˜ธ๋ฅผ ๋œปํ•œ๋‹ค.
  • ์„  ์Šคํƒ€์ผ์€ ๊บพ์€์„  ๊ทธ๋ž˜ํ”„์˜ ์„  ์Šคํƒ€์ผ์„ ์˜๋ฏธํ•œ๋‹ค
  1. ๋งˆ์ปค

    ๋งˆ์ปค์ž…๋ ฅ
    ์ .
    ํ”ฝ์…€,
    ์›o
    ๋ณ„*
    ๋”ํ•˜๊ธฐ+
    xx
    ๋‹ค์ด์•„๋ชฌ๋“œD
  2. ์„  ์Šคํƒ€์ผ

    ์„  ์Šคํƒ€์ผ์ž…๋ ฅ
    ์‹ค์„ -
    ํŒŒ์„ --
    ํŒŒ์„  - ์ ์„ -.
    ์ ์„ :

label ๋ฐ title ์„ค์ •

  • label์ด๋ž€ ์ถ•์˜ ์ด๋ฆ„์„ ์˜๋ฏธํ•˜๋ฉฐ, plt.xlabel๊ณผ plt.ylabel์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
# x์ถ• ์ด๋ฆ„ ์„ค์ •
plt.xlabel("x์ถ•", **kwargs)

# y์ถ• ์ด๋ฆ„ ์„ค์ •
plt.ylabel("y์ถ•", **kwargs)

# ์—ฌ๊ธฐ์„œ **kwargs๋Š” ํ…์ŠคํŠธ์˜ ํŠน์„ฑ์„ ์„ค์ •ํ•˜๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ๋งํ•œ๋‹ค.
  • title์ด๋ž€ ๊ทธ๋ž˜ํ”„์˜ ์ด๋ฆ„์œผ๋กœ, plt.title์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
# title ์„ค์ •
plt.title("์ œ๋ชฉ",loc)

# loc๋Š” 'center', 'left', 'right'๊ฐ€ ์žˆ๋‹ค.

tick ์„ค์ •

  • tick์ด๋ž€ ๊ทธ๋ž˜ํ”„์—์„œ ๋‚˜ํƒ€๋‚ด๋Š” ๋ˆˆ๊ธˆ์„ ์˜๋ฏธํ•œ๋‹ค.
# x์ถ•์˜ ๋ˆˆ๊ธˆ ์„ค์ •
plt.xticks([0, 1, 2])

# y์ถ•์˜ ๋ˆˆ๊ธˆ ์„ค์ •
plt.yticks(np.arange(1, 6))

# tick์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ˆˆ๊ธˆ์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
plt.xticks(np.arange(0, 2, 0.2), labels=['Jan', '', 'Feb', '', 'Mar', '',
                                         'May', '', 'June', '', 'July'])
plt.yticks(np.arange(0, 7), ('0', '1GB', '2GB', '3GB', '4GB', '5GB', '6GB'))
  • tick_params() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ˆˆ๊ธˆ์˜ ์Šคํƒ€์ผ์„ ๋‹ค์–‘ํ•˜๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
plt.tick_params(axis='x', direction='in', length=3, pad=6, 
                labelsize=14, labelcolor='green', top=True)
plt.tick_params(axis='y', direction='inout', length=10, pad=15, 
                labelsize=12, width=2, color='r')
  • axis๋Š” ์„ค์ •์ด ์ ์šฉ๋  ์ถ•์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. {โ€˜xโ€™, โ€˜yโ€™, โ€˜bothโ€™} ์ค‘ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.

  • direction์„ โ€˜inโ€™, โ€˜outโ€™์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ๋ˆˆ๊ธˆ์ด ์•ˆ/๋ฐ–์œผ๋กœ ํ‘œ์‹œ๋œ๋‹ค. {โ€˜inโ€™, โ€˜outโ€™, โ€˜inoutโ€™} ์ค‘ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.

  • length๋Š” ๋ˆˆ๊ธˆ์˜ ๊ธธ์ด๋ฅผ ์ง€์ •ํ•œ๋‹ค.

  • pad๋Š” ๋ˆˆ๊ธˆ๊ณผ ๋ ˆ์ด๋ธ”๊ณผ์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์ง€์ •ํ•œ๋‹ค.

  • labelsize๋Š” ๋ ˆ์ด๋ธ”์˜ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•œ๋‹ค.

  • labelcolor๋Š” ๋ ˆ์ด๋ธ”์˜ ์ƒ‰์ƒ์„ ์ง€์ •ํ•œ๋‹ค.

  • top/bottom/left/right๋ฅผ True/False๋กœ ์ง€์ •ํ•˜๋ฉด ๋ˆˆ๊ธˆ์ด ํ‘œ์‹œ๋  ์œ„์น˜๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.

  • width๋Š” ๋ˆˆ๊ธˆ์˜ ๋„ˆ๋น„๋ฅผ ์ง€์ •ํ•œ๋‹ค.

  • color๋Š” ๋ˆˆ๊ธˆ์˜ ์ƒ‰์ƒ์„ ์ง€์ •ํ•œ๋‹ค.

๋ฒ”๋ก€ ์„ค์ •

  • ๋ฒ”๋ก€(legend)๋ฅผ ํ‘œ์‹œํ•˜๋ ค๋ฉด plt.legend(loc)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒ”๋ก€๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฒ”๋ก€๋ฅผ ํ‘œ์‹œํ•˜๋ ค๋ฉด ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆด ๋•Œ label ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒ”๋ก€๋ฅผ ์ •์˜ํ•ด์•ผ ํ•œ๋‹ค.
plt.plot([1, 2, 3, 4], [2, 3, 5, 10], label='Price ($)')
plt.legend()

# plt.legend(loc=(1.0, 1.0))
'''
์ง์ ‘ ์œ„์น˜๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐฉ์‹ ์ด์™ธ์—๋„ 'upper right', 'upper left', 
'lower left', 'lower right', 'right', 'center', 'best' ๋“ฑ์œผ๋กœ ์œ„์น˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
'''

๋ฒ”์œ„ ์„ค์ •

  • xlim(), ylim(), axis() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ทธ๋ž˜ํ”„์˜ X, Y์ถ•์ด ํ‘œ์‹œ๋˜๋Š” ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
# X์ถ•์˜ ๋ฒ”์œ„: [xmin, xmax]
plt.xlim([0, 5])

# Y์ถ•์˜ ๋ฒ”์œ„: [ymin, ymax]
plt.ylim([0, 20])

# X, Y์ถ•์˜ ๋ฒ”์œ„: [xmin, xmax, ymin, ymax]
plt.axis([0, 5, 0, 20])

'''
axis ํ•จ์ˆ˜์—๋Š” ์ง์ ‘ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐฉ์‹ ์ด์™ธ์—๋„
'on' | 'off' | 'equal' | 'scaled' | 'tight' | 'auto' | 'normal' | 'image' | 'square' 
๋“ฑ์˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
'''

0๊ฐœ์˜ ๋Œ“๊ธ€