Matplotlib은 자료를 시각화 하는데 사용하는 대표적인 라이브러리로 import matplotlib.pyplot as plt(matplotlib의 pyplot을 plt라는 이름으로 import한다는 뜻)와 같이 import하여 사용한다.
1. 기본적인 그래프 그리기
plt.plot(a_list, b_list): a_list라는 이름의 리스트를 x축, b_list라는 이름의 리스트를 y축으로 하는 그래프 형성
plt.show(): 그래프를 보여줌
plot()을 쓰면 각 데이터 점을 이어주는 꺽은선 그래프가 출력
ex1>
-> (1, 4), (2, 3), (3, 2), (4, 1)을 이어주는 그래프 생성
ex2> sin 그래프 그리기
import matplotlib.pyplot as plt
from math import sin, pi
import numpy as np
a = np.linspace(0, 4*pi, 50) # 0부터 4*pi까지 50개 값 출력
sin_func = lambda x : sin(x) -> 링크 참고
b = list(map(sin_func, a)) -> 링크 참고
plt.plot(a, b)
plt.show()
>>
2. 산점도 그리기
plt.scatter(a, b): 점들이 찍히는 그래프(산점도)가 나타남
옵션
plt.scatter(a, b, s = n1, c = col, alpha = n2, marker = '^')
s: 점의 사이즈 설정 옵션, n은 단순 숫자로 해도 되고 np.array를 적용시켜 값에 따라 다른 점의 size를 줄 수도 있음 ex: plt.scatter(a, b, s = np.array(a)**2) 로 코딩하는 경우 a값이 커짐에 따라 점 크기도 커짐
c: 점의 색 설정 옵션, col은 ‘green’과 같은 색을 지칭하는 string
alpha: 색의 진하기 설정 옵션, n2는 0~1 사이의 숫자로 설정해야 하고, 1에 가까울수록 진함
marker: 점의 모양 설정 옵션, ^는 삼각형으로 표시
3. histogram 그리기
plt.hist(a, bins = n) -> a리스트를 n개의 구역으로 나눈 것에 대해 히스토그램 그림
ex>
import matplotlib.pyplot as plt
import numpy as np
a = np.random.randn(50000)
plt.hist(a, bins = 20)
plt.show()
>>
4. costomization
plt.xlabel('내용‘): x축의 이름 붙이기
plt.ylabel('내용‘): y축의 이름 붙이기
plt.title('제목‘): 그래프의 제목 붙이기
plt.grid(True): 그래프 내에 grid선 표시
plt.xticks(list): list안에 있는 값에 대해서만 x축에 눈금 표시
ex: plt.xticks([1, 2, 3])
plt.xticks(list, str_list, rotational = 'vertical'): list안에 있는 값에 대해서만 표시하는데 str_list에 있는 string으로 표시 가능, rotational = 'vertical'이 있으면 해당 값이 가로가 아닌 세로로 typing됨
ex: plt.xticks([1, 2, 3], ['1k', '2k', '3k'])
plt.yticks(list): list안에 있는 값에 대해서만 y축에 눈금 표시
plt.yticks(list, str_list, rotational = 'vertical'): list안에 있는 값에 대해서만 표시하는데 str_list에 있는 string으로 표시 가능
ex2>
import matplotlib.pyplot as plt
from math import sin, pi
import numpy as np
a = np.linspace(0, 4*pi, 50) # 0부터 4*pi까지 50개 값 출력
sin_func = lambda x : sin(x)
b = list(map(sin_func, a))
plt.plot(a, b)
plt.xticks([0, pi/2, pi, 3*pi/2, 2*pi, 5*pi/2, 3*pi, 7*pi/2, 4*pi])
plt.yticks([1, 0.5, 0, -0.5, -1])
plt.grid(True)
plt.show()
>>
ex3>
import matplotlib.pyplot as plt
from math import sin, pi
import numpy as np
a = np.linspace(0, 4*pi, 50) # 0부터 4*pi까지 50개 값 출력
sin_func = lambda x : sin(x)
b = list(map(sin_func, a))
plt.plot(a, b)
plt.xticks([0, pi/2, pi, 3*pi/2, 2*pi, 5*pi/2, 3*pi, 7*pi/2, 4*pi],
['0', 'pi/2', 'pi', '3*pi/2', '2*pi', '5*pi/2', '3*pi', '7*pi/2', '4*pi'])
plt.yticks([1, 0, -1], ['max', '0', 'min'], rotation='vertical')
plt.grid(True)
plt.show()
>>
plt.fill_between(a, b, c, color = 'red'): b값(y1)과 c값(y2) 사이의 공간을 'red'색으로 칠함, a는 x축 리스트
ex: plt.fill_between(a, b, 0, color = 'red'): 그래프와 x축 사이 공간을 a(x축)를 따라 빨강색으로 칠함
plt.text(a1, b1, '내용‘): (a1, b1) 좌표에 ’내용‘을 출력
ex4>
import matplotlib.pyplot as plt
from math import sin, pi
import numpy as np
a = np.linspace(0, 4*pi, 50) # 0부터 4*pi까지 50개 값 출력
sin_func1 = lambda x : sin(x)
sin_func2 = lambda x : sin(x)/2
b = list(map(sin_func1, a))
c = list(map(sin_func2, a))
plt.plot(a, b)
plt.plot(a, c)
plt.fill_between(a, b, c, color = 'blue')
plt.text(pi/2, 1, 'max')
plt.text(5*pi/2, 1, 'max')
plt.show()
>>
'Python' 카테고리의 다른 글
Python 개발 환경 구축2: Anaconda에서 가상 환경 다루기 (0) | 2022.05.11 |
---|---|
Pytorch 딥러닝 model 저장하기 (0) | 2020.12.22 |
tensor - numpy - PILImage 변환 (0) | 2020.12.04 |
Python os library에서 자주 쓰는 함수 정리 (0) | 2020.12.04 |
있어보이는 Python: map, lambda (0) | 2020.11.13 |