๋ฐ์ดํฐ ์๊ฐํ๋ ๋ฐ์ดํฐ ๋ถ์์ ํต์ฌ ์์ ์ค ํ๋๋ก, ๋ฐ์ดํฐ๋ฅผ ์ดํดํ๊ณ ํจ๊ณผ์ ์ผ๋ก ์ ๋ฌํ๋ ๋ฐ์ ํ์์ ์
๋๋ค. python์์๋ Mathplotlib ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ์ฌ ๋ค์ํ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆด ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ง๊ด์ ์ผ๋ก ์ดํดํ ์ ์์ต๋๋ค.
โฃ ๋ชฉ์ฐจ
1. ๊บพ์ ์ ํ ๊ทธ๋ํ๐ (Plot)
๊บพ์ ์ ํ ๊ทธ๋ํ๋ ๋ฐ์ดํฐ์ ์ถ์ด๋ฅผ ์๊ฐ์ ์ผ๋ก ํ์ ํ๋ ๋ฐ์ ๋ง์ด ํ์ฉํฉ๋๋ค. python์์๋Mathplotlib๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์๊ฐํํ๊ณ , ๊ทธ๋ํ๋ฅผ ๊พธ๋ฏธ๋ ๋ค์ํ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
โถ๊บพ์ ์ ํ ๊ทธ๋ํ 1๊ฐ ๋ง๋ค๊ธฐ
import matplotlib.pyplot as plt
# Figure ๊ฐ์ฒด ์์ฑ
figure = plt.figure() # ์ ์ฒด ์์ญ(๋ํ์ง)
# Axes ๊ฐ์ฒด ์์ฑ
axes = figure.add_subplot(111) # ์ฐจํธ ์์ญ # 1ํ 1์ด 1๋ฒ์งธ
# ๋ฐ์ดํฐ ์ค์
x = [0, 1, 2, 3, 4] # x์ถ ๊ฐ
y = [4, 1, 3, 5, 2] # y์ถ ๊ฐ
# ๊บพ์ ์ ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ
axes.plot(x, y)
# ๊ทธ๋ํ ์ถ๋ ฅ
plt.show()
์ ์ฝ๋๋ฅผ ์ด์ฉํ์ฌ ์๋์ ๊ฐ์ ๊ทธ๋ํ๋ฅผ ์ถ๋ ฅํ ์ ์์ต๋๋ค.
โถ๊บพ์ ์ ํ ๊ทธ๋ํ 2๊ฐ ๋ง๋ค๊ธฐ
import matplotlib.pyplot as plt
# Figure ๊ฐ์ฒด ์์ฑ
figure = plt.figure() # ์ ์ฒด ์์ญ(๋ํ์ง)
# Axes ๊ฐ์ฒด ์์ฑ
axes = figure.add_subplot(111) # ์ฐจํธ ์์ญ # 1ํ 1์ด 1๋ฒ์งธ
# ๋ฐ์ดํฐ ์ค์
x1 = [0, 1, 2, 3, 4]
y1 = [4, 1, 3, 5, 2]
x2 = [0, 1, 2, 3, 4]
y2 = [0, 8, 5, 3, 1]
# ๊บพ์ ์ ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ
axes.plot(x1, y1) # ์ฒซ ๋ฒ์งธ ๊ทธ๋ํ
axes.plot(x2, y2) # ๋ ๋ฒ์งธ ๊ทธ๋ํ
# ๊ทธ๋ํ ์ถ๋ ฅ
plt.show()
์ด๋ ๊ฒ ๋ฐ์ดํฐ ์ค์ ์ ์ถ๊ฐํ๋ฉด ๊ทธ๋ํ๋ฅผ ์ถ๊ฐ๋ก ๋ง๋ค ์๊ฐ ์์ต๋๋ค.
โถ๊บพ์ ์ ํ ๊ทธ๋ํ ๊พธ๋ฏธ๊ธฐ
import matplotlib.pyplot as plt
# Figure ๊ฐ์ฒด ์์ฑ
figure = plt.figure() # ์ ์ฒด ์์ญ(๋ํ์ง)
# Axes ๊ฐ์ฒด ์์ฑ
axes = figure.add_subplot(111) # ์ฐจํธ ์์ญ # 1ํ 1์ด 1๋ฒ์งธ
# ๋ฐ์ดํฐ ์ค์ ๋ฐ ๊พธ๋ฏธ๊ธฐ
# ์ ์ , ์ ๊ตต๊ธฐ
axes.plot([0, 1, 2, 3, 4], [0, 3, 0, 3, 0], linestyle='dotted', linewidth=5.0)
# ์ ์ ๋นจ๊ฐ, ํ์ ์ถ๊ฐ
axes.plot([0, 1, 2, 3, 4], [1, 2, 3, 4, 5], color='r', marker='v')
# ๊ทธ๋ํ ์ถ๋ ฅ
plt.show()
์ด ์ฝ๋์์ linestyle='dotted'์ ์ ์ ์คํ์ผ์ ์ ์ ์ผ๋ก ์ง์ ํ๊ณ , linewidth=5.0์ ์ ์ ๊ตต๊ธฐ๋ฅผ 5.0์ผ๋ก ์ค์ ํฉ๋๋ค. ๋ํ color='r'์ ์ ์ ์์์ ๋นจ๊ฐ์์ผ๋ก ์ง์ ํ๊ณ (๋ํ ์์์ ์ฒซ ๊ธ์๋ง ํ์) marker='v'๋ ๋ง์ปค๋ฅผ ์ผ๊ฐํ์ผ๋ก ์ง์ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ค์ ํ๊ณ ๊พธ๋ฉฐ์ง ๊ทธ๋ํ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
์ด๋ฒ์๋ ์๋ณ ๋ฐ์ดํฐ๋ฅผ ๋ด์ ๊บพ์ ์ ํ ๊ทธ๋ํ๋ฅผ ๋ํ๋ด๋ ์ฝ๋๋ฅผ ์์ฑํด ๋ณด๊ฒ ์ต๋๋ค.
import matplotlib.pyplot as plt
# Figure ๊ฐ์ฒด ์์ฑ
figure = plt.figure() # ์ ์ฒด ์์ญ(๋ํ์ง)
# Axes ๊ฐ์ฒด ์์ฑ
axes = figure.add_subplot(111) # ์ฐจํธ ์์ญ # 1ํ 1์ด 1๋ฒ์งธ
# ๋ฐ์ดํฐ ์ค์ ๋ฐ ๊พธ๋ฏธ๊ธฐ
# ์ ์คํ์ผ์ ์ ์ ์ผ๋ก, ๋ง์ปค๋ฅผ ์ผ๊ฐํ์ผ๋ก ์ง์ ํ์ฌ ๊บพ์ ์ ํ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฝ๋๋ค.
x = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun']
y = [1200, 800, 500, 400, 700, 800]
axes.plot(x, y, linestyle='--', marker='^')
# ๊ทธ๋ํ ์ถ๋ ฅ
plt.show()
์ด ์ฝ๋์์ linestyle='--'์ ์ ์ ์คํ์ผ์ ์ ์ ์ผ๋ก, marker='^'๋ ๋ง์ปค๋ฅผ ์ผ๊ฐํ์ผ๋ก ์ง์ ํฉ๋๋ค. ๊ทธ ๊ฒฐ๊ณผ, ์๋ณ ๋ฐ์ดํฐ์ ๋ํ ๊บพ์ ์ ํ ๊ทธ๋ํ๊ฐ ๊ทธ๋ ค์ง๋๋ค.
2. ๋ง๋๊ทธ๋ํ (Bar)๐
๋ฒ์ฃผํ ๋ฐ์ดํฐ๋ฅผ ์๊ฐํํ ๋ ๋ง๋๊ทธ๋ํ๋ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. Mathplotlib๋ฅผ ์ฌ์ฉํ์ฌ ๋ง๋๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฌ๊ณ , ๊ทธ์ ํ์ํ ์ ๋ชฉ๊ณผ ์ถ ๋ ์ด๋ธ์ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค.
import matplotlib.pyplot as plt
# Figure ๊ฐ์ฒด ์์ฑ
figure = plt.figure() # ์ ์ฒด ์์ญ(๋ํ์ง)
# Axes ๊ฐ์ฒด ์์ฑ
axes = figure.add_subplot(111) # ์ฐจํธ ์์ญ # 1ํ 1์ด 1๋ฒ์งธ
# ๋ฐ์ดํฐ ์ค์ ๋ฐ ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ
x = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
y = [8, 6, 5, 4, 7, 9, 5]
axes.bar(x, y)
# ๊ทธ๋ํ ํ์ดํ, x์ถ ์ ๋ชฉ, y์ถ ์ ๋ชฉ ์ค์
plt.title('weekday call') # ์ฐจํธ ์ ๋ชฉ
plt.xlabel('week') # x์ถ ์ ๋ชฉ
plt.ylabel('call') # y์ถ ์ ๋ชฉ
# ๊ทธ๋ํ ์ถ๋ ฅ
plt.show()
์ ์ฝ๋์์ plt.title(weekday call), plt.xlabel(week), plt.ylabel(call)์ ๊ฐ๊ฐ ์ฐจํธ์ ์ ๋ชฉ, x์ถ ์ ๋ชฉ, y์ถ ์ ๋ชฉ์ ์ค์ ํ๋ ๋ถ๋ถ์
๋๋ค. ์ด๋ฅผ ํตํด ์ฃผ๊ฐ ํตํ๋์ ๋ํ ๋ง๋๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฝ๋๋ค.
์์์ ํ์ธํด ๋ณธ ๊บพ์ ์ ๊ทธ๋ํ์ ๋ง๋๊ทธ๋ํ๋ฅผ ํจ๊ป ๊ทธ๋ฆฌ๋ ์์ ๋ฅผ ๋ง๋ค์ด ๋ด
์๋ค. ๋๋ค ํ y๊ฐ์ ์์ฑํ์ฌ ๊ฐ๊ฐ์ ๊ทธ๋ํ์ ๋์ํ๊ณ ์์ต๋๋ค. ๊ทธ๋ํ ์ถ๋ ฅ ํ์๋ ๊ทธ๋ํ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
import random
import matplotlib.pyplot as plt
# Figure ๊ฐ์ฒด ์์ฑ
figure = plt.figure(figsize=(20, 6)) # ์ ์ฒด ์์ญ(๋ํ์ง)
# Axes ๊ฐ์ฒด ์์ฑ
axes = figure.add_subplot(111) # ์ฐจํธ ์์ญ # 1ํ 1์ด 1๋ฒ์งธ
# ๋ฐ์ดํฐ ์ค์ ๋ฐ ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ
x = [n for n in range(101)] # 0๋ถํฐ 100๊น์ง์ ๊ฐ ๋ฆฌ์คํธ ์์ฑ
y1 = [] # ๊บพ์ ์
y2 = [] # ๋ง๋
for i in range(101):
y1.append(random.randint(0, 100)) # 0๋ถํฐ 100๊น์ง์ ๋๋คํ ์ ์๋ฅผ y1 ๋ฆฌ์คํธ์ ์ถ๊ฐ
y2.append(random.randint(0, 100)) # 0๋ถํฐ 100๊น์ง์ ๋๋คํ ์ ์๋ฅผ y2 ๋ฆฌ์คํธ์ ์ถ๊ฐ
axes.plot(x, y1, color='r', marker='.') # ๊บพ์ ์ ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ
axes.bar(x, y2, color='g') # ๋ง๋ ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ
# ๊ทธ๋ํ ์ถ๋ ฅ
plt.show()
3. ์ฐํฌ ๊ทธ๋ํ (Scatter)๐ง
๋ ๋ณ์ ๊ฐ์ ๊ด๊ณ๋ฅผ ์๊ฐ์ ์ผ๋ก ์ดํดํ๋ ๋ฐ์๋ ์ฐํฌ ๊ทธ๋ํ๊ฐ ํจ๊ณผ์ ์ ๋๋ค. Mathplotlib๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ์ ํจํด์ ์ดํด๋ณด๊ณ , ์ ์ ํฌ๊ธฐ์ ์์์ ์กฐ์ ํ์ฌ ๋์ฑ ๋ช ํํ๊ฒ ํํํ๋ ๋ฐฉ๋ฒ์ ํ์ธํด ๋ด ์๋ค.
import matplotlib.pyplot as plt
# Figure ๊ฐ์ฒด ์์ฑ
figure = plt.figure() # ์ ์ฒด ์์ญ(๋ํ์ง)
# Axes ๊ฐ์ฒด ์์ฑ
axes = figure.add_subplot(111) # ์ฐจํธ ์์ญ # 1ํ 1์ด 1๋ฒ์งธ
# ๋ฐ์ดํฐ ์ค์ ๋ฐ ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ
x = [1, 2, 3, 4, 5, 6]
y = [6, 4, 1, 2, 7, 5]
area = [50, 100, 150, 200, 250, 300] # ๊ฐ ์ ์ ํฌ๊ธฐ
color = ['red', 'green', 'blue', 'orange', 'aqua', 'crimson'] # ์์
axes.scatter(x, y, s=area, c=color) # ์ ํฌ๊ธฐ์ ์์ ์ค์
# ๊ทธ๋ํ ์ถ๋ ฅ
plt.show()
scatter ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฐํฌ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ ธ์ต๋๋ค. s=area๋ ๊ฐ ์ ์ ํฌ๊ธฐ๋ฅผ ์ค์ ํ๊ณ , c=color๋ ๊ฐ ์ ์ ์์์ ์ค์ ํฉ๋๋ค. ๊ทธ ๊ฒฐ๊ณผ, ์ ์ ์์์ด ๋ค๋ฅธ ์ฐํฌ ๊ทธ๋ํ๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
์์์ ๋ฐ๋ฅธ ์คํธ๋ ์ค๋ฅผ ๋ํ๋ด๋ ๊ทธ๋ํ๋ฅผ ์์ ๋ฅผ ํตํด ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค.
import matplotlib.pyplot as plt
# Figure ๊ฐ์ฒด ์์ฑ
figure = plt.figure() # ์ ์ฒด ์์ญ(๋ํ์ง)
# Axes ๊ฐ์ฒด ์์ฑ
axes = figure.add_subplot(111) # ์ฐจํธ ์์ญ # 1ํ 1์ด 1๋ฒ์งธ
# ๋ฐ์ดํฐ ์ค์ ๋ฐ ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ
noise = [20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70]
stress = [10, 11, 15, 20, 30, 42, 55, 70, 88, 110, 150]
axes.scatter(noise, stress, s=50) # ๊ฐ ์ ์ ํฌ๊ธฐ๋ฅผ 50์ผ๋ก ์ค์
# x์ถ๊ณผ y์ถ ๋ผ๋ฒจ ์ค์
plt.xlabel('Noise') # x์ถ ์ ๋ชฉ
plt.ylabel('Stress') # y์ถ ์ ๋ชฉ
# ๊ทธ๋ํ ์ถ๋ ฅ
plt.show()
s=50์ ๊ฐ ์ ์ ํฌ๊ธฐ๋ฅผ 50์ผ๋ก ์ค์ ํฉ๋๋ค. x์ถ๊ณผ y์ถ์ ๋ผ๋ฒจ๋ ๊ฐ๊ฐ 'Nosie'์ 'Stress'๋ก ์ค์ ํ์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ Nosie, Stress ๊ฐ์ ๊ด๊ณ๋ฅผ ์๊ฐํํ ๊ทธ๋ํ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
4. ์ํ ๊ทธ๋ํ (Pie)๐
์ํ ๊ทธ๋ํ๋ ๋ฐ์ดํฐ์ ์๋์ ์ธ ๋น์จ์ ํ๋์ ํ์ ํ๋ ๋ฐ์ ์ ์ฉํฉ๋๋ค. Mathplotlib๋ฅผ ์ฌ์ฉํ์ฌ ์ํ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฌ๊ณ , ๋ฒ๋ก์ ๋ ์ด๋ธ์ ์ถ๊ฐํ์ฌ ๊ทธ๋ํ๋ฅผ ๋์ฑ ๋ช ํํ๊ฒ ํํํ๋ ๋ฐฉ๋ฒ์ ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค.
import matplotlib.pyplot as plt
# Figure ๊ฐ์ฒด ์์ฑ
figure = plt.figure() # ์ ์ฒด ์์ญ(๋ํ์ง)
# Axes ๊ฐ์ฒด ์์ฑ
axes = figure.add_subplot(111) # ์ฐจํธ ์์ญ # 1ํ 1์ด 1๋ฒ์งธ
# ๋ฐ์ดํฐ ์ค์ ๋ฐ ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ
data = [1, 2, 3]
axes.pie(data)
# ๊ทธ๋ํ ์ถ๋ ฅ
plt.show()
pie ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ํ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ ธ์ต๋๋ค. data ๋ณ์์๋ ๊ทธ๋ํ์ ํ์๋ ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ๋ฉฐ, ํด๋น ๋ฐ์ดํฐ์ ๋น์จ์ ๋ฐ๋ผ ์ํ ๊ทธ๋ํ๊ฐ ๊ทธ๋ ค์ง๋๋ค. ๊ทธ๋ํ ์ถ๋ ฅ ํ์๋ ๊ทธ๋ํ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
โถ ์ํ ๊ทธ๋ํ์ ๋ฒ๋ก์ ๋ ์ด๋ธ์ ์ถ๊ฐํ๊ธฐ
import matplotlib.pyplot as plt
# Figure ๊ฐ์ฒด ์์ฑ
figure = plt.figure() # ์ ์ฒด ์์ญ(๋ํ์ง)
# Axes ๊ฐ์ฒด ์์ฑ
axes = figure.add_subplot(111) # ์ฐจํธ ์์ญ # 1ํ 1์ด 1๋ฒ์งธ
# ๋ฐ์ดํฐ ์ค์ ๋ฐ ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ
data = [1, 2, 3]
label = ['Good', 'Bad', 'Normal']
axes.pie(data, labels=label, autopct='%d%%') # ๋ ์ด๋ธ ํฌํจ, ์ ์%๋ก ํ์
# ๋ฒ๋ก ์ถ๊ฐ
plt.legend(label, loc='center left') # ๋ฒ๋ก ์์น ์ค์
# ๊ทธ๋ํ ์ถ๋ ฅ
plt.show()
labels ์ธ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ์น์
์ ๋ ์ด๋ธ์ ์ค์ ํ๊ณ , autopct='%d%%'๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ์น์
์ ๋น์จ์ ์ ์ ํ์์ผ๋ก ํํํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ plt.legend() ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒ๋ก๋ฅผ ์ถ๊ฐํ๊ณ , loc=center left๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒ๋ก ์์น๋ฅผ ์ค์ ํฉ๋๋ค. ๊ทธ๋ํ ์ถ๋ ฅ ํ์๋ ๊ทธ๋ํ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
์์์ ์ ๋ค์ด๊ฐ ๋นํ๋ฏผ์ ํจ๋์ ์์์ ์๋ ์ฒซ ์งธ์๋ฆฌ๊น์ง ํ์ํ๋ ๊ทธ๋ํ ์์ ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
import matplotlib.pyplot as plt
# Figure ๊ฐ์ฒด ์์ฑ
figure = plt.figure(figsize=(12, 12)) # ์ ์ฒด ์์ญ(๋ํ์ง)
# Axes ๊ฐ์ฒด ์์ฑ
axes = figure.add_subplot(111) # ์ฐจํธ ์์ญ # 1ํ 1์ด 1๋ฒ์งธ
# ๋ฐ์ดํฐ ์ค์ ๋ฐ ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ
vitamin = ['Vitamin A', 'Vitamin B1', 'Vitamin B2', 'Niacin', 'Vitamin B6', 'Vitamin C', 'Vitamin D', 'Vitamin E', 'Folate'] # ์ข
๋ฅ
data = [0.18, 0.3, 3.33, 3.75, 0.38, 25, 0.25, 2.75, 0.1] # ํจ๋
axes.pie(data, labels=vitamin, autopct='%0.1f%%') # ์์์ ์๋ ์ฒซ ๋ฒ์งธ ์๋ฆฌ๊น์ง, ๋ฐฑ๋ถ์จ๋ก ํ์
# ๊ทธ๋ํ ์ถ๋ ฅ
plt.show()
5. ํต์ฌ ๋ด์ฉ๐