math
CHAPTER 5 / 15
읽기 약 2분
FUNCTION
좌표와 그래프: 데이터 시각화의 기초
핵심 개념
직교 좌표계 (x, y)와 1차 함수 y = ax + b — 선형 회귀의 시작점. matplotlib와 Canvas로 그래프 직접 그리기.
본문
직교 좌표계 = 데이터의 위치
y축
|
| • (3, 4)
|
-----+------ x축
|
• (-2, -1)
|x축(가로), y축(세로) — 두 축의 교점이 원점 (0, 0).
1차 함수 y = ax + b
import matplotlib.pyplot as plt
import numpy as np
# y = 2x + 1
def linear(x, a=2, b=1):
return a * x + b
x = np.linspace(-5, 5, 100)
y = linear(x)
plt.plot(x, y, label='y = 2x + 1')
plt.axhline(0, color='gray', linewidth=0.5)
plt.axvline(0, color='gray', linewidth=0.5)
plt.grid(True, alpha=0.3)
plt.legend()
plt.title('1차 함수 — 직선 그래프')
plt.show()
# 핵심 속성
# - 기울기 a: x가 1 증가할 때 y가 a 만큼 변화
# - y절편 b: x=0일 때 y의 값
# - x절편: y=0일 때 x = -b/a
print(f"기울기: 2 (x가 1↑일 때 y가 2↑)")
print(f"y절편: 1 (x=0일 때 y=1)")
print(f"x절편: {-1/2} (y=0일 때 x=-0.5)")2차 함수 y = ax² + bx + c
def quadratic(x, a=1, b=-2, c=1):
return a * x**2 + b * x + c
x = np.linspace(-3, 5, 100)
y = quadratic(x)
plt.plot(x, y, label='y = x² - 2x + 1')
plt.axhline(0, color='gray', linewidth=0.5)
plt.grid(True, alpha=0.3)
plt.legend()
plt.title('2차 함수 — 포물선')
plt.show()
# 꼭짓점: x = -b/(2a) = -(-2)/(2*1) = 1
# 최솟값: f(1) = 1 - 2 + 1 = 0
print(f"꼭짓점: ({-(-2)/(2*1)}, {quadratic(1)})")선형 회귀 — 1차 함수의 실전 응용
import numpy as np
import matplotlib.pyplot as plt
# 가상 데이터: 광고비 vs 매출
ad_spend = np.array([10, 20, 30, 40, 50, 60, 70, 80, 90, 100])
revenue = np.array([15, 32, 45, 62, 79, 95, 112, 130, 145, 158])
# 최소제곱법으로 직선 a*x + b 의 a, b 찾기
n = len(ad_spend)
x_mean = np.mean(ad_spend)
y_mean = np.mean(revenue)
a = np.sum((ad_spend - x_mean) * (revenue - y_mean)) / np.sum((ad_spend - x_mean) ** 2)
b = y_mean - a * x_mean
print(f"y = {a:.2f} * x + {b:.2f}")
# y ≈ 1.59 * x + 0.0
# → 광고비 1 증가 시 매출 약 1.59 증가
# 시각화
plt.scatter(ad_spend, revenue, label='실제 데이터')
plt.plot(ad_spend, a * ad_spend + b, color='red', label=f'y = {a:.2f}x + {b:.2f}')
plt.xlabel('광고비')
plt.ylabel('매출')
plt.legend()
plt.title('광고비 vs 매출 — 선형 회귀')
plt.show()
# 미래 예측
ad_120 = a * 120 + b
print(f"광고비 120일 때 예상 매출: {ad_120:.0f}")JavaScript Canvas로 그래프 그리기
// canvas-graph.js — 브라우저에서 직접 그래프 그리기
const canvas = document.getElementById('graph');
const ctx = canvas.getContext('2d');
const W = canvas.width = 500;
const H = canvas.height = 400;
const cx = W / 2, cy = H / 2;
const scale = 20;
// 좌표축
ctx.strokeStyle = '#888';
ctx.beginPath();
ctx.moveTo(0, cy); ctx.lineTo(W, cy); // x축
ctx.moveTo(cx, 0); ctx.lineTo(cx, H); // y축
ctx.stroke();
// y = 2x + 1 그래프
ctx.strokeStyle = '#6366f1';
ctx.beginPath();
for (let x = -10; x <= 10; x += 0.1) {
const y = 2 * x + 1;
const px = cx + x * scale;
const py = cy - y * scale; // y축 뒤집기 (canvas는 아래가 +y)
if (x === -10) ctx.moveTo(px, py);
else ctx.lineTo(px, py);
}
ctx.stroke();다음 챕터
CH.6 "비율과 퍼센트" — RPM/CTR/전환율 같은 실전 비즈니스 수학.
AI 프롬프트
🤖 AI에게 잘 물어보는 법 — 모델·전략별 프롬프트
Claude
무료: Sonnet 4.6 / Pro $20/mo: Opus 4.6
내 데이터(CSV 또는 배열)를 분석해서 어떤 함수(1차/2차/지수)에 가장 잘 맞는지 시각화해줘.
ChatGPT
무료: GPT-5.5 / Plus $20/mo: GPT-5.5 Pro
한국 인디해커가 매출 데이터를 matplotlib으로 분석한 사례 5개와 인사이트 패턴을 알려줘.
Gemini
무료: 2.5 Flash / Pro $19.99/mo: 3.1 Pro
내 GA4 / 매출 / 사용자 데이터를 선형 회귀로 분석하고 향후 6개월 예측 + 신뢰구간을 보고해줘.
Grok
무료: Grok 4.1 / SuperGrok $30/mo
2026년 데이터 시각화 도구 (matplotlib vs Plotly vs D3 vs Recharts) 트렌드와 추천을 솔직히 알려줘.
⭐ 이것만 기억하세요
좌표와 그래프: 데이터 시각화의 기초는 이 3가지만 확실히 잡으세요
1.직교 좌표계 (x, y)는 데이터의 위치를 표현하는 가장 기본적인 시각화 도구
2.1차 함수 y = ax + b의 기울기 a와 y절편 b가 선형 회귀의 핵심 — 데이터에서 a, b를 찾아내는 기법
3.다음 챕터 CH.6에서 비율·백분율 — AdSense RPM·CTR·전환율 등 비즈니스 수학으로 진입
공유하기
진행도 5 / 15