import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4])
plt.ylabel('some numbers')
plt.show()

plt.plot([1, 2, 3, 4], [1, 4, 9, 16])

import numpy as np
# evenly sampled time at 200ms intervals
t = np.arange(0., 5., 0.2)
# red dashes, blue squares and green triangles
plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^')
plt.show()
t = np.arange(0., 5., 0.2)
생성된 배열 t는 [0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4, 4.6, 4.8] 이다.
plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^')
t, t, 'r--'는 첫 번째 데이터 시리즈를 나타낸다.
x축 데이터는 t, y축 데이터도 t이며, 그래프는 빨간색 대시선(r--)으로 표시
t, t2, 'bs'는 두 번째 데이터 시리즈를 나타낸다.
x축 데이터는 t, y축 데이터는 t2이며, 그래프는 파란색 사각형(bs)으로 표시
t, t3, 'g^'는 세 번째 데이터 시리즈를 나타낸다.
x축 데이터는 t, y축 데이터는 t3이며, 그래프는 녹색 삼각형(g^)으로 표시

names = ['group_a', 'group_b', 'group_c']
values = [1, 10, 100]
plt.figure(figsize=(9, 3))
plt.subplot(131)
plt.bar(names, values)
plt.subplot(132)
plt.scatter(names, values)
plt.subplot(133)
plt.plot(names, values)
plt.suptitle('Categorical Plotting')
plt.show()

names = ['group_a', 'group_b', 'group_c']
names 리스트는 세 개의 범주형 데이터 그룹 이름을 정의한다.
values = [1, 10, 100]
values 리스트는 각 그룹에 해당하는 값을 정의한다: 1, 10, 100.
plt.figure(figsize=(9, 3))
새로운 그림(figure)을 생성한다.
여기서는 가로 9인치, 세로 3인치로 설정된다.
plt.subplot(131)
그림을 여러 개의 하위 플롯(subplot)으로 나누는 함수이다.
131은 1행 3열의 하위 플롯 레이아웃에서 첫 번째 플롯을 선택한다.
plt.bar(names, values)
plt.bar 함수는 막대 그래프를 그리는 함수이다.
names는 x축의 범주형 데이터 이름을 지정하고,
values는 각 범주에 해당하는 값을 지정한다.
plt.subplot(132)
1행 3열의 하위 플롯 레이아웃에서 두 번째 플롯을 선택한다.
plt.scatter(names, values)
산점도를 그리는 함수이다.
names는 x축의 범주형 데이터 이름을 지정하고,
values는 각 범주에 해당하는 값을 지정한다.
plt.subplot(133)
1행 3열의 하위 플롯 레이아웃에서 세 번째 플롯을 선택한다.
plt.plot(names, values)
선 그래프를 그리는 함수이다.
names는 x축의 범주형 데이터 이름을 지정하고, values는 각 범주에 해당하는 값을 지정한다.
plt.suptitle('Categorical Plotting')
제목을 'Categorical Plotting'으로 설정한다.
mu, sigma = 100, 15
x = mu + sigma * np.random.randn(10000)
# the histogram of the data
n, bins, patches = plt.hist(x, 50, density=True, facecolor='g', alpha=0.75)
plt.xlabel('Smarts')
plt.ylabel('Probability')
plt.title('Histogram of IQ')
plt.text(60, .025, r'$\mu=100,\ \sigma=15$')
plt.axis([40, 160, 0, 0.03])
plt.grid(True)
plt.show()

mu, sigma = 100, 15
mu는 평균(mean)을 나타내며, 값은 100이다.
sigma는 표준 편차(standard deviation)를 나타내며, 값은 15이다.
x = mu + sigma * np.random.randn(10000)
np.random.randn(10000)은 표준 정규 분포(평균 0, 표준 편차 1)를 따르는 10,000개의 난수를 생성한다.
이 난수들에 평균 mu와 표준 편차 sigma를 적용하여,
평균이 100이고 표준 편차가 15인 정규 분포를 따르는 데이터를 생성한다.
n, bins, patches = plt.hist(x, 50, density=True, facecolor='g', alpha=0.75)
x는 히스토그램을 그릴 데이터이다.
50은 데이터를 50개의 구간으로 나눈다.
density=True는 히스토그램을 확률 밀도로 정규화한다.
각 빈의 높이가 그 구간의 확률을 나타낸다.
facecolor='g'는 히스토그램 막대의 색상을 녹색으로 설정한다.
alpha=0.75는 히스토그램 막대의 투명도를 설정하며, 값이 1에 가까울수록 불투명해진다.
이 함수는 n, bins, patches를 반환한다.
n은 각 빈의 높이를 나타내는 값들이다.
bins는 빈 경계 값을 나타낸다.
patches는 히스토그램의 아티스트 객체를 나타낸다.
plt.xlabel('Smarts')
여기서는 x축 레이블을 'Smarts'로 설정한다.
plt.ylabel('Probability')
y축 레이블을 'Probability'로 설정한다.
plt.title('Histogram of IQ')
제목을 'Histogram of IQ'로 설정한다.
plt.text(60, .025, r'$\mu=100,\ \sigma=15$')
그래프에 텍스트를 추가한다.
60, .025는 텍스트의 위치를 설정한다.
r''는 LaTeX 형식을 사용하여 평균과 표준 편차 값을 표시하는 텍스트이다.
plt.axis([40, 160, 0, 0.03])
그래프의 축 범위를 설정한다.
[40, 160, 0, 0.03]는 x축 범위를 40에서 160까지, y축 범위를 0에서 0.03까지로 설정한다.
plt.grid(True)
그래프에 격자(grid)를 추가한다.
ax = plt.subplot()
t = np.arange(0.0, 5.0, 0.01)
s = np.cos(2*np.pi*t)
line, = plt.plot(t, s, lw=2)
plt.annotate('local max', xy=(2, 1), xytext=(3, 1.5),
arrowprops=dict(facecolor='black', shrink=0.05),
)
plt.ylim(-2, 2)
plt.show()
ax = plt.subplot()
새로운 서브 플롯(subplot)을 생성한다.
ax는 생성된 서브 플롯의 Axes 객체를 저장한다.
t = np.arange(0.0, 5.0, 0.01)
0.0에서 5.0까지 0.01 간격으로 균일하게 샘플링된 숫자의 배열을 생성한다.
s = np.cos(2*np.pi*t)
np.cos(2np.pit)는 배열 t의 각 값에 대해 코사인 값을 계산한다.
line, = plt.plot(t, s, lw=2)
plt.plot(t, s, lw=2)는 t와 s를 사용하여 선 그래프를 그린다.
lw=2는 선의 너비(line width)를 2로 설정한다.
line,는 생성된 Line2D 객체를 저장한다.
plt.annotate('local max', xy=(2, 1), xytext=(3, 1.5), arrowprops=dict(facecolor='black', shrink=0.05))
plt.annotate 함수는 그래프에 주석을 추가한다.
'local max'는 주석의 텍스트이다.
xy=(2, 1)은 주석을 달 위치(데이터 좌표)를 지정한다.
여기서는 x=2, y=1 위치에 주석을 달고 있다.
xytext=(3, 1.5)은 주석 텍스트를 표시할 위치(데이터 좌표)를 지정한다.
여기서는 x=3, y=1.5 위치에 텍스트를 표시한다.
arrowprops=dict(facecolor='black', shrink=0.05)는 화살표의 속성을 설정한다.
facecolor='black'은 화살표의 색상을 검은색으로 설정한다.
shrink=0.05는 화살표의 길이를 5% 줄인다.
plt.ylim(-2, 2)
y축의 범위를 -2에서 2까지로 설정한다.
