[Week 2-5] ๐Ÿ“Š๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”

Jadeยท2021๋…„ 1์›” 29์ผ
0

๋ถ€์ŠคํŠธ์บ ํ”„ AI Tech

๋ชฉ๋ก ๋ณด๊ธฐ
10/54

2์ฃผ์ฐจ ๊ธˆ์š”์ผ

  • matplotlib
  • seaborn

๐Ÿ“ˆ[matplotlib]

๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ์‹œ๊ฐํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. pandas์™€ ์—ฐ๋™ ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ pyplot์ด๋ผ๋Š” ์„œ๋ธŒ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•œ๋‹ค. pyplot ๋ชจ๋“ˆ์€ ์•”๋ฌต์ ์œผ๋กœ plt๋ผ๋Š” ์•ฝ์นญ(alias)์œผ๋กœ ํ˜ธ์ถœํ•œ๋‹ค.
matplotlib document ์—์„œ ์ž์„ธํ•œ ์„ค๋ช…๊ณผ ์˜ˆ์ œ๋ฅผ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค.

  • plt.plot()
    ๋ผ์ธ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋Š” ๋ฐ ์“ด๋‹ค. ๋งˆ์ปค๋‚˜ ์„  ์Šคํƒ€์ผ ๋“ฑ ๋‹ค์–‘ํ•œ ์˜ต์…˜์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
'''================ ๋ฐ”๋‹๋ผ๋ง› ๊ทธ๋ž˜ํ”„ ================'''

import numpy as np
import matplotlib.pyplot as plt
import math

x = np.arange(-10,10,0.5)
y = np.array([i**2 + 2*i + 5 for i in x])

plt.plot(x,y) # ๊ทธ๋ž˜ํ”„์˜ ๋‘ ์ถ•์„ ์„ค์ •
plt.show() # plot์„ ํ™”๋ฉด์— ๋„์šด๋‹ค



plot ์˜ต์…˜์„ ๋”ฐ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ๋งˆ์ปค์™€ ์„ ์€ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์•Œ์•„์„œ ์„ค์ •๋œ๋‹ค. ์˜ต์…˜์€ ์•ฝ์‹์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ๊ณ , ๊ธธ๊ฒŒ ํ’€์–ด์„œ ์“ธ ์ˆ˜๋„ ์žˆ๋‹ค.

'''========== line ์˜ต์…˜์„ ์•ฝ์‹์œผ๋กœ ์„ค์ • =========='''

x = np.arange(-10,10,0.5)
y = np.array([i**2 + 2*i + 5 for i in x])

plt.plot(x,y,'-ro') # -ro : ์„  ์Šคํƒ€์ผ - , ์„  ์ƒ‰ red , ๋งˆ์ปค ๋ชจ์–‘ o
plt.show()

'''========== ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด line ์˜ต์…˜ ์„ค์ • =========='''

x = np.arange(-10,10,0.5)
y = np.array([i**2 + 2*i + 5 for i in x])

plt.plot(x,y,linewidth=3,linestyle='--' ,marker='*',
         markersize=10, color='#8ed130')
         # keyword argument๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ข€๋” ์ž์„ธํžˆ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
plt.show()


ํ•œ plot ์•ˆ์— ๋‘ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆด ์ˆ˜๋„ ์žˆ๋‹ค.

'''========== ํ•œ plot ์•ˆ์— 2๊ฐœ์˜ ๊ทธ๋ž˜ํ”„ ๊ทธ๋ฆฌ๊ธฐ =========='''

x = np.arange(0,10,0.05)
sin_x = np.array([math.sin(i) for i in x])
cos_x = np.array([math.cos(i) for i in x])

plt.plot(x,sin_x) # plot์„ 2๊ฐœ ์Œ“์•„ ๋‘๊ณ 
plt.plot(x,cos_x)
plt.show() # plt.show()๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ํ•œ๋ฒˆ์— plush ํ•œ๋‹ค



ํ•œ ํ™”๋ฉด ์•ˆ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ subplot์„ ๋ฐฐ์น˜ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

'''========== subplot ์—ฌ๋Ÿฌ ๊ฐœ ๋ฐฐ์น˜ํ•˜๊ธฐ =========='''

x = np.arange(0,10,0.05)
sin_x = np.array([math.sin(i) for i in x])
cos_x = np.array([math.cos(i) for i in x])

plt.subplot(2,1,1) # ๊ทธ๋ž˜ํ”„๋ฅผ 2ํ–‰ 1์—ด๋กœ ๋ฐฐ์น˜, 1๋ฒˆ์งธ ๊ทธ๋ž˜ํ”„
plt.plot(x, sin_x, '--r')

plt.subplot(2,1,2) # 2ํ–‰ 1์—ด๋กœ ๋ฐฐ์น˜, 2๋ฒˆ์งธ ๊ทธ๋ž˜ํ”„
plt.plot(x, cos_x, '--b')

plt.show()




๊ทธ๋ž˜ํ”„ ์ œ๋ชฉ๊ณผ ์ถ•์— ๋ ˆ์ด๋ธ”์ด๋‚˜ ๋ฒ”์ฃผ๋ฅผ ๋‹ฌ ์ˆ˜๋„ ์žˆ๋‹ค.

'''========== Title, Label, Legend =========='''

x = np.arange(0,10,0.05)
sin_x = np.array([math.sin(i) for i in x])
cos_x = np.array([math.cos(i) for i in x])

plt.plot(x,sin_x)
plt.plot(x,cos_x)

plt.xlabel('time')
plt.ylabel('signal')
plt.title('time/signal graph', fontsize = 15)
plt.legend(['signal 1 - sin', 'signal 2 - cos'], loc='upper right')

plt.show()


  • plt.bar()
    ๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๋Š” ๋ฐ ์‚ฌ์šฉํ•œ๋‹ค. ๊ฐ ์ธ๋ฑ์Šค๊ฐ€ ์–ด๋–ค ๊ฐ’์„ ์˜๋ฏธํ•˜๋Š”์ง€ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด ํ…์ŠคํŠธ ๋ ˆ์ด๋ธ”์„ ์ง€์ •ํ•ด ๋‹ฌ์•„์ค„ ์ˆ˜ ์žˆ๋‹ค.
'''========== ๊ธฐ๋ณธ์ ์ธ ๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„ =========='''

index = np.arange(7)
# range ์จ๋„ ๋˜๋Š”๋ฐ ๊ทธ๋ž˜ํ”„ ์—ฌ๋Ÿฌ ๊ฐœ ๊ฒน์น  ๋•Œ๋Š”
# np.arange() ๋ฅผ ์จ์•ผ ์ธ๋ฑ์Šค ์œ„์น˜+๊ทธ๋ž˜ํ”„ ํญ ์—ฐ์‚ฐ์ด ๋œ๋‹ค
label = ['mon','tue','wed','thr','fri','sat','sun']
data = [5,6,2,7,8,4,1]

plt.bar(index, data, color='gold')

plt.title('visitors',fontsize=12)
plt.xlabel('day',fontsize=12)
plt.ylabel('people',fontsize=12)
plt.xticks(index,label,fontsize=12) # index์™€ label ๋งค์น˜

plt.show()



์—ฌ๋Ÿฌ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ฐ€๋กœ๋กœ ๋‚˜๋ž€ํžˆ ๋†“๊ณ  ๊ทธ๋ฆด ์ˆ˜๋„ ์žˆ๋‹ค.

'''========== ๋‘ ๊ทธ๋ž˜ํ”„ ๋‚˜๋ž€ํžˆ ๋†“๊ธฐ =========='''

case_right = [84,76,94,97]
case_wrong = [16,24,6,3]

label = ['cat','dog','bird','frog']
index = np.arange(4)
wid = 0.35 

plt.bar(index, case_wrong, wid, color='#e36052')
plt.bar(index+0.35, case_right, wid, color='#66a62b') # ๋‘๊ฐœ ๋‚˜๋ž€ํžˆ

plt.title('Prediction result',fontsize=12)
plt.xlabel('category')
plt.ylabel('case')
plt.legend(['Incorrect','Correct'])
# legend๋Š” ๋”ฐ๋กœ ์œ„์น˜ ์˜ต์…˜์„ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์•Œ์•„์„œ ์ž๋ฆฌ๋ฅผ ์žก์•„์ค€๋‹ค
plt.xticks(index,label)

plt.show()


์—ฌ๋Ÿฌ ๊ทธ๋ž˜ํ”„๋ฅผ ์„ธ๋กœ๋กœ ์Œ“์•„์„œ ๊ทธ๋ฆด ์ˆ˜๋„ ์žˆ๋‹ค.

'''========== ์„ธ๋กœ๋กœ ๊ทธ๋ž˜ํ”„ ์Œ“๊ธฐ =========='''

case_right = [84,76,94,97] 
case_wrong = [16,24,6,3]
# right/wrong ์ผ€์ด์Šค์˜ ํ•ฉ์ด ์ผ์ •ํ•ด์„œ ์ด๋ ‡๊ฒŒ ์Œ“์œผ๋ฉด ์ด์˜๋‹ค

label = ['cat','dog','bird','frog']
index = range(4)
wid = 0.5 

plt.bar(index, case_wrong, wid, color='#e36052')
plt.bar(index, case_right, wid, color='#66a62b', bottom=case_wrong)
# case_wrong์˜ ์•„๋žซ๋ถ€๋ถ„์ด ์ด case_right ๊ทธ๋ž˜ํ”„์˜ ์‹œ์ž‘์ 

plt.title('Prediction result',fontsize=12)
plt.xlabel('category')
plt.ylabel('case',)
plt.legend(['Incorrect','Correct'])
plt.xticks(index,label)
plt.ylim(0,120) # ๊ทธ๋ž˜ํ”„์—์„œ ๊ฐ’์„ ํ‘œ์‹œํ•  ์˜์—ญ์˜ ํ•œ๊ณ„ ์„ค์ •

plt.show()


๐Ÿ“Š[seaborn]

matplotlib๋กœ๋„ ๋‹ค์–‘ํ•œ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆด ์ˆ˜ ์žˆ์ง€๋งŒ, tplotlib์˜ wrapper์ธ seaborn์„ ์ด์šฉํ•˜๋ฉด ๋” ์˜ˆ์œ ๊ทธ๋ž˜ํ”„๋ฅผ ์‰ฝ๊ฒŒ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋‹ค. searbon ๋ชจ๋“ˆ์€ ์•”๋ฌต์ ์œผ๋กœ sns๋ผ๋Š” ์•ฝ์นญ(alias)์œผ๋กœ ํ˜ธ์ถœํ•œ๋‹ค.
seaborn document ์—์„œ ์ž์„ธํ•œ ์„ค๋ช…๊ณผ ์˜ˆ์ œ๋ฅผ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ[ํ”ผ์–ด ์„ธ์…˜]

์˜ค๋Š˜ ๊ฐ•์˜๊ฐ€ ์–ด๋ ค์›Œ์„œ ์ดˆ๋ฐ˜์—๋Š” ๊ฐ์ž ํ•œ์ฐธ ๊ฐ•์˜๋ฅผ ๋“ค์—ฌ๋‹ค๋ณด๊ณ  ์žˆ์—ˆ๋‹ค. ์–ด๋Š ์ •๋„ ๋“ฃ๊ณ  ๋‚˜์„œ ์–ด์ œ์ฒ˜๋Ÿผ ๊ฐ•์˜์ž๋ฃŒ๋ฅผ ๊ฐ™์ด ๋ณด๋ฉด์„œ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆด๋‹ค.
๊ณต์‹ ํ”ผ์–ด์„ธ์…˜ ์‹œ์ž‘ ์‹œ๊ฐ„์ธ 2์‹œ์— ๋ชจ์ด๋ฉด ๊ฐ•์˜๋ฅผ ์ถฉ๋ถ„ํžˆ ์†Œํ™”ํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋ชจ์ด๊ฒŒ ๋˜๋Š” ๊ฒƒ ๊ฐ™์•„ ๋‹ค์Œ ์ฃผ์—๋Š” ๊ฐ•์˜๋ฅผ ์ข€ ๋” ๋“ฃ๊ณ  4์‹œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.

profile
๋ฐ˜๊ฐ€์›Œ์šฉ

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