일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 자바
- C# 프로젝트
- 딥러닝 실험 깃 버전관리
- 디자인패턴
- 파이썬
- 딥러닝
- 파이썬 경사하강법
- 인공지능 깃 버전관리
- 머신러닝
- 인공지능
- 디자인 패턴
- 자바 영화 api
- 대학원 급여
- 정규화
- 로스트아크
- 의료 ai 대학원 월급
- 경사하강법
- API
- Dehaze
- pandas
- 활성화 함수
- 백준
- 영화 api
- 대학원 월급
- 통계학
- python
- 자바 프로젝트
- MLP
- 코딩테스트
- DCP
- Today
- Total
대학원 일기
파이썬 시각화툴(Matplotlib) 본문
matplotlib
matplotlib
가장 대중적으로 많이 쓰였고 많은 파이썬 라이브러리의 근간이 되는 matplotlib 이다. matplotlib는 다른 라이브러리들의 부모 라이브러리로서의 역할을 하고 있다고 표현할정도로 다른 라이브러리들에 많은 영향을 주었다. 다소 복잡한 라이브러리 구성으로 인해 최근에는 그 사용 빈도와 대중성이 떨어지고 있으나 여전히 많은 입문자들이 처음 사용해보게 되는 좋은 시각화 라이브러리이다.
- matplotlib
- pyplot
- line
- scatter
- bar
- histogram
- boxplot
- scatter matrix
matplotlib
- pyplot 객체를 사용하여 데이터를 표시
- Pyplot 객체에 그래프들을 쌓은 다음 show로 flush
import matplotlib.pyplot as plt
X = range(100)
Y = range(100)
plt.plot(X, Y)
- Graph는 원래 figure 객체에 생성됨
- pyplot 객체 사용시, 기본 figure에 그래프가 그려짐
import numpy as np
X_1 = range(100)
Y_1 = [np.cos(value) for value in X]
X_2 = range(100)
Y_2 = [np.sin(value) for value in X]
plt.plot(X_1, Y_1)
plt.plot(X_2, Y_2)
plt.plot(range(100), range(100))
plt.show()
- subplot으로 여러개의 그림판을 만들 수 있다.
fig = plt.figure() # figure 반환
fig.set_size_inches(10,10) # 크기지정
ax_1 = fig.add_subplot(1,2,1) # 두개의 plot 생성
ax_2 = fig.add_subplot(1,2,2) # 두개의 plot 생성
ax_1.plot(X_1, Y_1, c="b") # 첫번째 plot
ax_2.plot(X_2, Y_2, c="g") # 두번째 plot
plt.show() # show & flush
Set color
- Color 속성을 사용
- Float → 흑백, rgb color, predefined color 사용
X_1 = range(100)
Y_1 = [value for value in X]
X_2 = range(100)
Y_2 = [value + 100 for value in X]
plt.plot(X_1, Y_1, color="#000000")
plt.plot(X_2, Y_2, c="c")
plt.show()
Set linstyle
- ls 또는 linestyle 속성 사용
plt.plot(X_1, Y_1, c="b", linestyle="dashed")
plt.plot(X_2, Y_2, c="r", ls="dotted")
plt.show()
Set title
- Pyplot에 title함수 사용, figure의 subplot별 입력 가능
- Latex 타입의 표현도 가능 (수식 표현 가능)
plt.plot(X_1, Y_1, color="b", linestyle="dashed")
plt.plot(X_2, Y_2, color="r", linestyle="dotted")
plt.title("Two lines")
plt.show()
Set legend
- Legend 함수로 범례를 표시함, loc 위치등 속성 지정
plt.plot(X_1, Y_1, color="b", linestyle="dashed", label='line_1')
plt.plot(X_2, Y_2, color="r", linestyle="dotted", label='line_2')
plt.legend(shadow=True, fancybox=False, loc="upper right")
plt.title('$y = ax+b$')
plt.xlabel('$x_line$')
plt.ylabel('y_line')
plt.show()
Set grid & xylim
- Graph 보조선을 긋는 grid와 xy축 범위 한계를 지정
plt.plot(X_1, Y_1, color="b", linestyle="dashed", label='line_1')
plt.plot(X_2, Y_2, color="r", linestyle="dotted", label='line_2')
plt.legend(shadow=True, fancybox=True, loc="lower right")
plt.grid(True, lw=0.4, ls="--", c=".90")
plt.xlim(-1000, 2000)
plt.ylim(-1000, 2000)
plt.show()
Scatter
- scatter 함수 사용, marker: scatter 모양지정
data_1 = np.random.rand(512, 2)
data_2 = np.random.rand(512, 2)
plt.scatter(data_1[:,0], data_1[:,1], c="b", marker="x")
plt.scatter(data_2[:,0], data_2[:,1], c="r", marker="o")
plt.show()
- s: 데이터의 크기를 지정, 데이터의 크기비교가능
N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = np.pi * (15 * np.random.rand(N))**2
plt.scatter(x, y, s=area, c=colors, alpha=0.5)
plt.show()
Bar chart
data = [[5., 25., 50., 20.],
[4., 23., 51., 17],
[6., 22., 52., 19]]
X = np.arange(0,8,2)
plt.bar(X + 0.00, data[0], color = 'b', width = 0.50)
plt.bar(X + 0.50, data[1], color = 'g', width = 0.50)
plt.bar(X + 1.0, data[2], color = 'r', width = 0.50)
plt.xticks(X+0.50, ("A","B","C", "D"))
plt.show()
data = np.array([[5., 25., 50., 20.],
[4., 23., 51., 17],
[6., 22., 52., 19]])
color_list = ['b', 'g', 'r']
data_label = ["A","B","C"]
X = np.arange(data.shape[1])
data = np.array([[5., 5., 5., 5.],
[4., 23., 51., 17],
[6., 22., 52., 19]])
for i in range(3):
plt.bar(X, data[i], bottom = np.sum(data[:i], axis=0),
color = color_list[i], label=data_label[i])
plt.legend()
plt.show()
A = [5., 30., 45., 22.]
B = [5, 25, 50, 20]
X = range(4)
plt.bar(X, A, color = 'b')
plt.bar(X, B, color = 'r', bottom = 60)
plt.show()
women_pop = np.array([5, 30, 45, 22])
men_pop = np.array([5, 25, 50, 20])
X = np.arange(4)
plt.barh(X, women_pop, color = 'r')
plt.barh(X, -men_pop, color = 'b')
plt.show()
histogram
X = np.random.randn(1000)
plt.hist(X,bins=100)
plt.show()
boxplot
data = np.random.randn(100,5)
plt.boxplot(data)
plt.show()
'AI > 인공지능 기초' 카테고리의 다른 글
MNIST 데이터 학습 (0) | 2022.02.23 |
---|---|
Machine Learning & Pytorch(Tensor Manipulation) (0) | 2022.02.22 |
pandas II (0) | 2022.02.13 |
선형(Linear) 데이터와 비선형(Non-linear) 데이터의 차이 (0) | 2022.02.03 |
딥러닝(Deep learning) 학습 방법 (1) | 2022.02.01 |