๋ฐ์ดํฐ ๋ถ์์์ ์๊ฐํ๋ ๋จ์ํ ์์ ๊ทธ๋ํ๋ฅผ ๋ง๋๋ ๊ฒ์ด ์๋๋๋ค. ๋ณต์กํ ๋ฐ์ดํฐ ์์ ์จ๊ฒจ์ง ํจํด์ ๋ฐ๊ฒฌํ๊ณ , ์ธ์ฌ์ดํธ๋ฅผ ๋ช ํํ๊ฒ ์ ๋ฌํ๋ ๊ฐ๋ ฅํ ๋๊ตฌ์ ๋๋ค.
Python์ย Matplotlib์ ๋ฐ์ดํฐ ์๊ฐํ์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ๊ฐ๋จํ ์ ๊ทธ๋ํ๋ถํฐ ๋ณต์กํ 3D ํ๋กฏ๊น์ง ๋ชจ๋ ๊ฒ์ ๊ตฌํํ ์ ์์ต๋๋ค. ์ด ํํ ๋ฆฌ์ผ์์๋ Matplotlib์ ํต์ฌ ๊ธฐ๋ฅ์ ์ค์ ์์ ์ ํจ๊ป ์์ ํ ๋ง์คํฐํด๋ณด๊ฒ ์ต๋๋ค.
Copy# ํจํค์ง ์ค์น
pip install matplotlib numpy
# ๊ธฐ๋ณธ ์ํฌํธ
import matplotlib.pyplot as plt
import numpy as np
# ํ๊ธ ํฐํธ ์ค์ (ํ๊ตญ์ด ์ฌ์ฉ์ ํ์!)
plt.rcParams['font.family'] = ['Noto Sans CJK JP']
plt.rcParams['axes.unicode_minus'] = False
๐ก Pro Tip: ํ๊ธ ํฐํธ ์ค์ ์ ๋นผ๋จน์ผ๋ฉด ํ๊ธ์ด ๊นจ์ ธ์ ๋ณด์ ๋๋ค. ๋ฐ๋์ ์ค์ ํด์ฃผ์ธ์!
์ ๊ทธ๋ํ๋ ์๊ฐ์ ๋ฐ๋ฅธ ๋ณํ๋ ์ฐ์์ ์ธ ๋ฐ์ดํฐ์ ํธ๋ ๋๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ฐจํธ์ ๋๋ค.
Copy# ๋ฐ์ดํฐ ์ค๋น
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# ์ ๊ทธ๋ํ ์์ฑ
plt.figure(figsize=(8, 6))
plt.plot(x, y, marker='o', linewidth=2, markersize=8, color='#2E86AB')
plt.title('์ ๊ทธ๋ํ ์์ ', fontsize=14, fontweight='bold')
plt.xlabel('X ๊ฐ', fontsize=12)
plt.ylabel('Y ๊ฐ', fontsize=12)
plt.grid(True, alpha=0.3)
plt.show()
ํ์ฉ ์ฌ๋ก:
์ฐ์ ๋๋ ๋ ๋ณ์ ๊ฐ์ ๊ด๊ณ๋ฅผ ์๊ฐ์ ์ผ๋ก ํ์ ํ ์ ์๋ ๊ฐ๋ ฅํ ๋๊ตฌ์ ๋๋ค.
Copy# ๋๋ค ๋ฐ์ดํฐ ์์ฑ
np.random.seed(42)
x = np.random.randn(50)
y = np.random.randn(50)
colors = np.random.rand(50)
# ์ฐ์ ๋ ์์ฑ
plt.figure(figsize=(8, 6))
plt.scatter(x, y, c=colors, alpha=0.7, s=60, cmap='viridis')
plt.title('์ฐ์ ๋ ์์ ', fontsize=14, fontweight='bold')
plt.xlabel('X ๊ฐ', fontsize=12)
plt.ylabel('Y ๊ฐ', fontsize=12)
plt.colorbar(label='์์ ๊ฐ')
plt.grid(True, alpha=0.3)
plt.show()
ํ์ฉ ์ฌ๋ก:
๋ง๋ ๊ทธ๋ํ๋ ์นดํ ๊ณ ๋ฆฌ๋ณ ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํ ๋ ๊ฐ์ฅ ์ง๊ด์ ์ธ ์ฐจํธ์ ๋๋ค.
Copy# ์นดํ
๊ณ ๋ฆฌ ๋ฐ์ดํฐ
categories = ['์ฌ๊ณผ', '๋ฐ๋๋', '์ค๋ ์ง', 'ํฌ๋', '๋ธ๊ธฐ']
values = [23, 45, 56, 78, 32]
# ๋ง๋ ๊ทธ๋ํ ์์ฑ
plt.figure(figsize=(10, 6))
bars = plt.bar(categories, values,
color=['#FF6B6B', '#4ECDC4', '#45B7D1', '#96CEB4', '#FFEAA7'])
plt.title('๊ณผ์ผ๋ณ ํ๋งค๋', fontsize=14, fontweight='bold')
plt.xlabel('๊ณผ์ผ ์ข
๋ฅ', fontsize=12)
plt.ylabel('ํ๋งค๋', fontsize=12)
# ๋ง๋ ์์ ๊ฐ ํ์
for bar, value in zip(bars, values):
height = bar.get_height()
plt.text(bar.get_x() + bar.get_width()/2., height + 1,
f'{value}', ha='center', va='bottom')
plt.grid(True, alpha=0.3, axis='y')
plt.show()
ํ์ฉ ์ฌ๋ก:
ํ์คํ ๊ทธ๋จ์ ๋ฐ์ดํฐ์ ๋ถํฌ๋ฅผ ํ๋์ ํ์ ํ ์ ์๊ฒ ํด์ฃผ๋ ํ์ ์ฐจํธ์ ๋๋ค.
Copy# ์ ๊ท๋ถํฌ ๋ฐ์ดํฐ ์์ฑ
np.random.seed(42)
data = np.random.normal(100, 15, 1000)
# ํ์คํ ๊ทธ๋จ ์์ฑ
plt.figure(figsize=(10, 6))
plt.hist(data, bins=30, color='#A8E6CF', alpha=0.7,
edgecolor='black', linewidth=0.5)
plt.title('๋ฐ์ดํฐ ๋ถํฌ ํ์คํ ๊ทธ๋จ', fontsize=14, fontweight='bold')
plt.xlabel('๊ฐ', fontsize=12)
plt.ylabel('๋น๋', fontsize=12)
# ํต๊ณ ์ ๋ณด ์ถ๊ฐ
mean_val = np.mean(data)
std_val = np.std(data)
plt.axvline(mean_val, color='red', linestyle='--', linewidth=2, label=f'ํ๊ท : {mean_val:.1f}')
plt.legend()
plt.grid(True, alpha=0.3, axis='y')
plt.show()
ํ์ฉ ์ฌ๋ก:
Copy# ์ ๋ฌธ์ ์ธ ์์ ์กฐํฉ
colors = ['#2E86AB', '#A23B72', '#F18F01', '#C73E1D']
Copyplt.grid(True, alpha=0.3, linestyle='-', linewidth=0.5)
Copyplt.legend(loc='best', frameon=True, shadow=True)
plt.annotate('์ค์ ํฌ์ธํธ', xy=(x, y), xytext=(x+1, y+1),
arrowprops=dict(arrowstyle='->', color='red'))
Copyfig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, figsize=(15, 12))
fig.suptitle('์ข
ํฉ ๋ฐ์ดํฐ ๋ถ์ ๋์๋ณด๋', fontsize=16, fontweight='bold')
# ๊ฐ ์๋ธํ๋กฏ์ ๋ค๋ฅธ ์ฐจํธ ์์ฑ
# ax1, ax2, ax3, ax4์ ๊ฐ๊ฐ ๋ค๋ฅธ ์๊ฐํ ์ ์ฉ
Copyplt.savefig('my_chart.png', dpi=300, bbox_inches='tight',
facecolor='white', edgecolor='none')
Matplotlib์ ๋จ์ํด ๋ณด์ด์ง๋ง ๋ฌด๊ถ๋ฌด์งํ ๊ฐ๋ฅ์ฑ์ ๊ฐ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ์ค๋ ๋ฐฐ์ด 4๊ฐ์ง ๊ธฐ๋ณธ ์ฐจํธ๋ง์ผ๋ก๋ ๋๋ถ๋ถ์ ๋ฐ์ดํฐ ์๊ฐํ ์๊ตฌ์ฌํญ์ ํด๊ฒฐํ ์ ์์ต๋๋ค.
ํต์ฌ ํฌ์ธํธ ์ ๋ฆฌ:
๋ค์ ๋จ๊ณ:
๋ฐ์ดํฐ ์๊ฐํ๋ ์ฐ์ต์ด ์ ๋ถ์ ๋๋ค. ์ค๋ ๋ฐฐ์ด ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์ฌ๋ฌ๋ถ๋ง์ ๋ฉ์ง ์ฐจํธ๋ฅผ ๋ง๋ค์ด๋ณด์ธ์!
๐ก ์ด ํํ ๋ฆฌ์ผ์ด ๋์์ด ๋์ จ๋ค๋ฉด ๊ณต์ ํด์ฃผ์ธ์. ๋ ๋ง์ ๋ฐ์ดํฐ ๋ถ์ ํ์ ๋ค์ ํฌ์คํธ์์ ๋ง๋์!