import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
์ฌ์ฉ ์ํฉ: ์๊ฐ์ ๋ฐ๋ฅธ ๋ฐ์ดํฐ์ ๋ณํ๋ฅผ ํํํ ๋ ์ฌ์ฉํจ.
์์: ์ฃผ์ ๊ฐ๊ฒฉ ์ถ์ด, ๊ธฐ์จ ๋ณํ ๋ฑ.
์ฅ์ : ์ฐ์์ ์ธ ๋ฐ์ดํฐ์ ์ถ์ธ๋ฅผ ์ง๊ด์ ์ผ๋ก ํ์
๊ฐ๋ฅ.

x = [1, 2, 3, 4]
y = [10, 21, 13, 41]
plt.plot(x, y) # ๊ธฐ๋ณธ์ ์ธ ์ ๊ทธ๋ํ ์์ฑ
plt.title('Line Plot') # ์ ๋ชฉ ์ค์
plt.show() # ๊ทธ๋ํ ์ถ๋ ฅ
z = [1, 2, 3, 4]
y = [10, 21, 13, 41]
fig, ax = plt.subplots() # figure(์บ๋ฒ์ค)์ axes(์ถ) ์์ฑ
ax.plot(z, y) # ์ ๊ทธ๋ํ ์์ฑ
plt.show() # ๊ทธ๋ํ ์ถ๋ ฅ
plt.plot(x, y) : ๊ฐ๋จํ ๋ฐฉ์์ผ๋ก ์ ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ (pyplot ์ธํฐํ์ด์ค)plt.title() : ๊ทธ๋ํ์ ์ ๋ชฉ ์ค์ plt.show() : ์๊ฐํ๋ ๊ทธ๋ํ๋ฅผ ํ๋ฉด์ ํ์plt.subplots() : ๊ฐ์ฒด์งํฅ ๋ฐฉ์์ผ๋ก figure์ ์ถ ๊ฐ์ฒด๋ฅผ ์์ฑax.plot(x, y) : axes ๊ฐ์ฒด๋ฅผ ํ์ฉํ ์ ๊ทธ๋ํ ์์ฑ์ฌ์ฉ ์ํฉ: ์นดํ
๊ณ ๋ฆฌ๋ณ ๊ฐ์ ๋น๊ตํ ๋ ์ฌ์ฉ๋จ.
์์: ๊ทธ๋ฃน๋ณ ํ๋งค๋, ์ธ๊ตฌ ์ ๋ฑ.
์ฅ์ : ํญ๋ชฉ๋ณ ํฌ๊ธฐ๋ฅผ ๋ช
ํํ ๋น๊ตํ ์ ์์.

categories = ['A', 'B', 'C', 'D']
values = [10, 20, 15, 30]
plt.bar(categories, values) # ๋ง๋ ๊ทธ๋ํ ์์ฑ
plt.title('Bar Chart')
plt.show()
fig, ax = plt.subplots()
categories = ['์ด์ฌ๋ช
', '์ด๋์ฐ', '๊น๋์ฐ', '์์ฒ ์'] # x์ถ์ ํ์ํ ์นดํ
๊ณ ๋ฆฌ
values = [31, 13, 8, 15] # ๊ฐ ์นดํ
๊ณ ๋ฆฌ์ ๊ฐ
ax.bar(categories, values) # ๋ง๋ ๊ทธ๋ํ ์์ฑ
plt.show() # ์ถ๋ ฅ
plt.bar(x, height) : pyplot ๋ฐฉ์์ผ๋ก ๋ง๋ ๊ทธ๋ํ ์์ฑax.bar(x, height) : axes ๊ฐ์ฒด๋ฅผ ํ์ฉํ ๋ง๋ ๊ทธ๋ํ ์์ฑplt.title() : ์ ๋ชฉ ํ์plt.show() : ๊ทธ๋ํ ์ถ๋ ฅ์ฌ์ฉ ์ํฉ: ๋ ๋ณ์ ๊ฐ ๊ด๊ณ๋ ์๊ด์ฑ์ ๋ถ์ํ ๋ ์ฌ์ฉ.
์์: ํค vs ๋ชธ๋ฌด๊ฒ, ๊ด๊ณ ๋น vs ํ๋งค๋.
์ฅ์ : ๋ถํฌ ํน์ฑ๊ณผ ๊ด๊ณ์ฑ์ ์๊ฐ์ ์ผ๋ก ์ฝ๊ฒ ํ์
๊ฐ๋ฅ.

x = [5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6]
y = [99, 86, 87, 88, 100, 86, 103, 87, 94, 78, 77, 85, 86]
plt.scatter(x, y) # ์ฐ์ ๋ ์์ฑ
plt.title('Scatter Plot')
plt.show()
fig, ax = plt.subplots()
ax.scatter(x, y) # ์ฐ์ ๋ ์์ฑ
plt.show()
plt.scatter(x, y) : pyplot ๋ฐฉ์์ผ๋ก ์ฐ์ ๋ ์์ฑax.scatter(x, y) : axes ๊ฐ์ฒด๋ฅผ ํตํ ์ฐ์ ๋ ์์ฑ์ฌ์ฉ ์ํฉ: ๋ฐ์ดํฐ์ ๋ถํฌ, ๋น๋, ํจํด ํ์
์ ์ฌ์ฉ.
์์: ์ํ ์ ์ ๋ถํฌ, ๊ณ ๊ฐ ์ฐ๋ น์ธต.
์ฅ์ : ๋ถํฌ์ ๋ชจ์(์ ๊ท/์๋ ๋ฑ)์ ์ฝ๊ฒ ํ์ธ ๊ฐ๋ฅ.

import numpy as np
mpl.rcParams['axes.unicode_minus'] = False # ์์ ๊นจ์ง ๋ฐฉ์ง
data = np.random.randn(1000) # ์ ๊ท๋ถํฌ๋ฅผ ๋ฐ๋ฅด๋ ๋์ 1000๊ฐ ์์ฑ
plt.hist(data, bins=30) # ํ์คํ ๊ทธ๋จ ์์ฑ
plt.title('Histogram')
plt.show()
fig, ax = plt.subplots()
ax.hist(data, bins=30) # 30๊ฐ์ ๊ตฌ๊ฐ์ผ๋ก ๋๋ ํ์คํ ๊ทธ๋จ ์ถ๋ ฅ
plt.show()
plt.hist(data) / ax.hist(data) : ๋ฐ์ดํฐ ๋ถํฌ๋ฅผ ๋ง๋ ํํ๋ก ์๊ฐํnp.random.randn(n) : ์ ๊ท๋ถํฌ๋ฅผ ๋ฐ๋ฅด๋ ๋์ ์์ฑ์ฌ์ฉ ์ํฉ: ์๊ฐ์ ๋ฐ๋ผ ์ฌ๋ฌ ๊ทธ๋ฃน์ ๋ณํ๋ฅผ ๋์์ ํํํ ๋ ์ฌ์ฉ.
์์: ์ ํ๋ณ ๋งค์ถ ๋ณํ, ๋ถ์๋ณ ์์ฐ ์ฌ์ฉ ์ถ์ด.
์ฅ์ : ์ ์ฒด ๋ณํ + ์ธ๋ถ ํญ๋ชฉ ๋ณํ ๋์ ํ์
๊ฐ๋ฅ.

x = [1, 2, 3, 4, 5]
y1 = [1, 1, 2, 3, 5]
y2 = [0, 4, 2, 6, 8]
y3 = [1, 3, 5, 7, 9]
plt.stackplot(x, y1, y2, y3, labels=['Y1', 'Y2', 'Y3'])
plt.legend(loc='upper left')
plt.title('Stack Plot')
plt.show()
x = [1, 2, 3, 4, 5]
y1 = [1, 2, 3, 4, 5]
y2 = [3, 8, 8, 7, 9]
y3 = [2, 7, 6, 5, 10]
fig, ax = plt.subplots()
ax.stackplot(x, y1, y2, y3, labels=['Y1', 'Y2', 'Y3'])
ax.legend(loc='upper right')
plt.show()
plt.stackplot() / ax.stackplot() : ์ฌ๋ฌ ๊ณ์ด ๋ฐ์ดํฐ๋ฅผ ๋์ ์์ญ์ผ๋ก ์๊ฐํlegend(loc=...) : ๋ฒ๋ก ์์น ์ค์ plt.title() : ์ ๋ชฉ ์ค์ plt.show() : ๊ทธ๋ํ ์ถ๋ ฅ์ฌ์ฉ ์ํฉ: ๋ฐ์ดํฐ์ ๋ถํฌ์ ์ด์์น ํ์ธ ์ ์ฌ์ฉ.
์์: ์ํ ์ ์์ ๋ฒ์, ์ ํ์ ํ์ง ๋ถํฌ.
์ฅ์ : ์ค์๊ฐ, ์ฌ๋ถ์์, ์ด์์น ๋ฑ ํต๊ณ์ ํน์ฑ์ ๊ฐ๊ฒฐํ๊ฒ ํํ.

data = np.random.rand(6, 10) # 0~1 ๋ฒ์์ ๋์ 6ํ 10์ด ์์ฑ
plt.boxplot(data) # ๋ฐ์ค ํ๋กฏ ๊ทธ๋ฆฌ๊ธฐ
plt.title('Box Plot')
plt.show()
fig, ax = plt.subplots()
data = np.random.rand(6, 10)
ax.boxplot(data) # ๋ฐ์ค ํ๋กฏ ์์ฑ
plt.show()
np.random.rand(n, m) : ๊ท ๋ฑ๋ถํฌ๋ฅผ ๋ฐ๋ฅด๋ ๋์ ๋ฐฐ์ด ์์ฑplt.boxplot(data) / ax.boxplot(data) : ๋ฐ์ค ํ๋กฏ์ผ๋ก ๋ถํฌ์ ์ด์์น ์๊ฐํ์ฌ์ฉ ์ํฉ: ๋ฐ์ค ํ๋กฏ์ ์ ๋ณด๋ฅผ ํฌํจํ๋ฉด์ ๋ถํฌ์ ๋ฐ๋๊น์ง ํจ๊ป ํํ.
์์: ๊ทธ๋ฃน๋ณ ์๋ ๋ถํฌ, ์ํ ์ ์ ๋ฐ๋.
์ฅ์ : ์์ฝ ํต๊ณ์ ๋ถํฌ ๋ฐ๋๋ฅผ ๋์์ ํํ ๊ฐ๋ฅ.

data = np.random.rand(10, 4) # 10ํ 4์ด์ ๋์ ๋ฐ์ดํฐ ์์ฑ
plt.violinplot(data) # ๋ฐ์ด์ฌ๋ฆฐ ํ๋กฏ ๊ทธ๋ฆฌ๊ธฐ
plt.title('Violin Plot')
plt.show()
fig, ax = plt.subplots()
data = np.random.rand(10, 4)
ax.violinplot(data) # ๋ฐ์ด์ฌ๋ฆฐ ํ๋กฏ ์์ฑ
plt.show()
plt.violinplot() / ax.violinplot() : ๋ฐ๋ ํจ์ ๊ธฐ๋ฐ์ผ๋ก ๋ถํฌ ์๊ฐํsizes = [30, 20, 25, 15, 10]
labels = ['A', 'B', 'C', 'D', 'E']
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.title('Pie Chart')
plt.show()
