Search

Matplotlib

Matplotlib

[๋งทํ”Œ๋กฏ๋ฆฝ]
ํŒŒ์ด์ฌ์—์„œ ๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„, ์ƒ์ž๊ทธ๋ฆผ, ์„  ๊ทธ๋ž˜ํ”„, ์‚ฐ์ ๋„, ํžˆ์Šคํ† ๊ทธ๋žจ ๋“ฑ์˜ ํ†ต๊ณ„ ๊ทธ๋ž˜ํ”„๋“ค์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๊ทธ๋ž˜ํ”„ ํŒจํ‚ค์ง€
โ€ข
๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„
โ€ข
ํžˆ์Šคํ† ๊ทธ๋žจ
โ€ข
์„  ๊ทธ๋ž˜ํ”„
โ€ข
์‚ฐ์ ๋„
โ€ข
์ƒ์ž๊ทธ๋ฆผ

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

๋ฒ”์ฃผํ˜• ๋ฐ์ดํ„ฐ ์ˆ˜์น˜๋ฅผ ์š”์•ฝํ•˜๋Š” ๊ทธ๋ฆผ - ๊ฐ€๋กœ, ์„ธ๋กœ, ๋ˆ„์ , ๊ทธ๋ฃน ํ˜•ํƒœ์˜ ๊ทธ๋ž˜ํ”„๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. - X์ถ•, Y์ถ•, ๋ผ๋ฒจ ๋“ฑ์„ ์ง€์ •ํ•œ๋‹ค.
# ๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„ import matplotlib.pyplot as plt # ํ•œ๊ธ€ ํฐํŠธ ์„ค์ • plt.rcParams['font.family'] ='Malgun Gothic' # ๋ฐ์ดํ„ฐ names = ['apple', 'grape', 'strawberry'] values = [50, 128, 70] colors = ['red', 'green', 'blue'] # ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„ ์„ค์ • # plt.bar( x์ถ• ๋ฐ์ดํ„ฐ, y์ถ• ๋ฐ์ดํ„ฐ ) plt.bar(names, values, align='center', color=colors) # ์ œ๋ชฉ ๋ฐ ๋ผ๋ฒจ plt.title('๊ณผ์ผ ํŒ๋งค๋Ÿ‰') plt.xlabel('๊ณผ์ผ') plt.ylabel('ํŒ๋งค๋Ÿ‰') # y์ถ• ์ตœ์†Ÿ๊ฐ’, ์ตœ๋Œ“๊ฐ’ ์ง€์ • # plt.ylim(0, 200) # ๋ˆˆ๊ธˆ ๋‹จ์œ„๋ฅผ ์ง€์ • # 0~200 ๊นŒ์ง€ 10 ๋‹จ์œ„๋ฅผ ๋ˆˆ๊ธˆ ์ง€์ • plt.yticks( range(0, 200, 10) ) # ๊ทธ๋ž˜ํ”„ ์ด๋ฏธ์ง€ ์ €์žฅ plt.savefig('๋ง‰๋Œ€๊ทธ๋ž˜ํ”„.png', dpi=400, bbox_inches='tight') # ๊ทธ๋ž˜ํ”„ ์ถœ๋ ฅ plt.show()
Python
๋ณต์‚ฌ

ํžˆ์Šคํ† ๊ทธ๋žจ

๋ฐ์ดํ„ฐ ๋ถ„ํฌ๋ฅผ ์‹œ๊ฐํ™”ํ•œ ๊ทธ๋ž˜ํ”„๋กœ ์—ฐ์†๋œ ๋ฒ”์œ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„ vs ํžˆ์Šคํ† ๊ทธ๋žจ

โ€ข
๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„ : x์ถ• ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹จ์ผํ•œ ํ•ญ๋ชฉ์— ๋Œ€ํ•ด์„œ y์ถ•์˜ ์ˆ˜์น˜๋ฅผ ํ‘œํ˜„ํ•œ ๊ทธ๋ž˜ํ”„
โ€ข
ํžˆ์Šคํ† ๊ทธ๋žจ : x์ถ• ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฐ์†๋œ ๋ฒ”์œ„(๊ตฌ๊ฐ„)์„ ์˜๋ฏธํ•˜๊ณ , ํ•ด๋‹น ๋ฒ”์œ„์— ๋Œ€ํ•œ ๋„์ˆ˜์˜ ๋ถ„ํฌ๋ฅผ ๋‚˜ํƒœ๋Š” ๊ทธ๋ž˜ํ”„ (๋ถ„ํฌ๋„๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•œ ๊ทธ๋ž˜ํ”„)
# ํžˆ์Šคํ† ๊ทธ๋žจ import matplotlib.pyplot as plt import numpy as np plt.rcParams['font.family'] ='Malgun Gothic' # ํ•™์ƒ๋“ค์˜ ์„ฑ์  ๋ถ„ํฌ๋ฅผ ํžˆ์Šคํ† ๊ทธ๋žจ์„ ์ถœ๋ ฅ # ๋ฐ์ดํ„ฐ # np.random.normal(loc= ํ‰๊ท , scale= ํ‘œ์ค€ํŽธ์ฐจ, size= ๋ฐ์ดํ„ฐ๊ฐœ์ˆ˜) scores = np.random.normal(loc= 70, scale= 10, size= 500) # ํžˆ์Šคํ† ๊ทธ๋žจ ๊ทธ๋ž˜ํ”„ ์„ค์ • plt.hist(scores, edgecolor='black', color='blue') # ์ œ๋ชฉ ๋ฐ ๋ผ๋ฒจ plt.title('ํ•™์ƒ๋“ค์˜ ์„ฑ์  ๋ถ„ํฌ') plt.xlabel('์„ฑ์ ') plt.ylabel('๋นˆ๋„') # ๊ทธ๋ž˜ํ”„ ์ด๋ฏธ์ง€ ์ €์žฅ plt.savefig('ํžˆ์Šคํ† ๊ทธ๋žจ.png', dpi=400) # ๊ทธ๋ž˜ํ”„ ์ถœ๋ ฅ plt.show()
Python
๋ณต์‚ฌ

์‚ฐ์ ๋„

๋‘ ๋ณ€์ˆ˜ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œํ˜„ํ•œ ๊ทธ๋ž˜ํ”„
โ€œ์‚ฐ์ ๋„โ€ : ํฉ์–ด์ ธ์žˆ๋Š” ์ ์„ ํ‘œ์‹œํ•œ ๊ทธ๋ฆผ
์–‘์˜ ์ƒ๊ด€๊ด€๊ณ„, ์Œ์˜ ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด์ƒ์น˜ ์‹๋ณ„

ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜์— ๋”ฐ๋ฅธ ๋‹ค๋ฅธ ๋ณ€์ˆ˜์˜ ์ˆ˜์น˜๊ฐ€ ๋ณ€ํ™”ํ•˜๋Š” ์ถ”์ด๋ฅผ ์˜ˆ์ธกํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.
import matplotlib.pyplot as plt import numpy as np from scipy.stats import linregress plt.rcParams['font.family'] ='Malgun Gothic' plt.rcParams['axes.unicode_minus'] =False # ๋ฐ์ดํ„ฐ np.random.seed(50) x = np.random.randn(100) y = 2 * x + np.random.randn(100) # ์ถ”์„ธ์„  ๊ณ„์‚ฐ # slope : ๊ธฐ์šธ๊ธฐ # intercept : ์ ˆํŽธ # r_value : (ํ”ผ์–ด์Šจ)์ƒ๊ด€๊ณ„์ˆ˜ # - ๋‘ ๋ณ€์ˆ˜ ๊ฐ„์˜ ์„ ํ˜• ๊ด€๊ณ„์˜ ๊ฐ•๋„์™€ ๋ฐฉํ–ฅ # p_value : ์œ ์˜์„ฑ ๊ฒ€์ • ๊ฒฐ๊ณผ (ํšŒ๊ท€์‹์ด ํ†ต๊ณ„์ ์œผ๋กœ ์œ ์˜๋ฏธ) # std_err : ๊ธฐ์šธ๊ธฐ ์ถ”์ •๊ฐ’์˜ ํ‘œ์ค€์˜ค์ฐจ slope, intercept, r_value, p_value, std_err = linregress(x,y) # ์„  ๊ทธ๋ž˜ํ”„ ๋ฐ์ดํ„ฐ line = slope * x + intercept # y = ax + c plt.plot(x, line, color='orange', label='์ถ”์„ธ์„ ') print('์ ˆํŽธ : {}'.format(intercept)) # ๊ทธ๋ž˜ํ”„ ์„ค์ • # s : ์ ์˜ ํฌ๊ธฐ plt.scatter(x, y, edgecolors='black', s=20) # ์ œ๋ชฉ ๋ฐ ๋ผ๋ฒจ plt.title('์‚ฐ์ ๋„ ๋ฐ์ดํ„ฐ') plt.xlabel('X ์ถ•') plt.ylabel('Y ์ถ•') # ๊ทธ๋ž˜ํ”„ ์ด๋ฏธ์ง€ ์ €์žฅ plt.savefig('์‚ฐ์ ๋„.png', dpi=400) # ๊ทธ๋ž˜ํ”„ ์ถœ๋ ฅ plt.show()
Python
๋ณต์‚ฌ

์ƒ์ž๊ทธ๋ฆผ (Box plot)

์ตœ์†Ÿ๊ฐ’, 1์‚ฌ๋ถ„์œ„(25%), 2์‚ฌ๋ถ„์œ„(์ค‘์•™๊ฐ’;50%), 3์‚ฌ๋ถ„์œ„(75%), ์ตœ๋Œ“๊ฐ’์ด๋ผ๋Š” 5๊ฐ€์ง€ ํ†ต๊ณ„๋Ÿ‰์„ ๊ธฐ์ค€์œผ๋กœ ๋‚˜ํƒ€๋‚ธ ๊ทธ๋ฆผ
โ€ข
์ˆ˜์—ผ : ์ƒ์ž ๋ฐ–์— ์žˆ๋Š” ์ง์„ , ์ด์ƒ์น˜๊ฐ€ ์•„๋‹Œ ๋ฐ์ดํ„ฐ ๋“ค ์ค‘ ์ตœ๋Œ“๊ฐ’, ์ตœ์†Ÿ๊ฐ’
โ€ข
์ด์ƒ์น˜ : ์ด์ƒํ•œ ๋ฐ์ดํ„ฐ, ์ƒ์ž ๋ฐ–์— ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ
import matplotlib.pyplot as plt import numpy as np plt.rcParams['font.family'] ='Malgun Gothic' plt.rcParams['axes.unicode_minus'] =False # ๋ฐ์ดํ„ฐ np.random.seed(5) data = np.random.normal(loc=0, scale=1, size=100) # ๊ทธ๋ž˜ํ”„ ์„ค์ • # notch : ๋…ธ์น˜(ํŒŒ์—ฌ์ง„ ํ™ˆ) ์—ฌ๋ถ€ # sym : ํŠน์ด์  ํ‘œ์‹œ ๊ธฐํ˜ธ # showmeans : ํ‰๊ท  ํ‘œ์‹œ ์—ฌ๋ถ€ plt.boxplot(data, notch=True, sym='+', showmeans=True) # ์ œ๋ชฉ ๋ฐ ๋ผ๋ฒจ plt.title('์ƒ์ž๊ทธ๋ฆผ ๋ฐ์ดํ„ฐ') plt.xlabel('๋ฐ์ดํ„ฐ') plt.ylabel('๊ฐ’') # ๊ทธ๋ž˜ํ”„ ์ด๋ฏธ์ง€ ์ €์žฅ plt.savefig('์ƒ์ž๊ทธ๋ฆผ.png', dpi=400) # ๊ทธ๋ž˜ํ”„ ์ถœ๋ ฅ plt.show()
Python
๋ณต์‚ฌ