티스토리 뷰
'Matplotlib' 는 파이썬에서 가장 인기있는 데이터 시각화 라이브러리이다. 이것을 이용해서 도표나 차트를 손쉽게 그릴 수 있다. 오늘은 'Matplotlib' 라이브러리 설치 및 차트를 그리는 것을 포스트 하겠다.
자세한 정보는 아래의 링크를 참고하자.
https://maplotlib.org : Matplotlib 공식 사이트
https://matplotlib.org/tutorials/introductory/pyplot.html:Pyplot 튜토리얼
Matplotlib 설치 (pip3 사용)
pip3 install matplotlib
설치가 완료되면 파이썬3 콘솔에서 아래의 명령어를 입력하여 버전 확인
>>> import matplotlib.pyplot
>>> matplotlib.__version__
plot 그리기
기본 plot
import matplotlib.pyplot as plt
import numpy as np
a=np.array([1,6,4,3,12,9,4,2]) # 배열 생성
plt.plot(a) # plot 생성
plt.show() # plot 그리기

y=X^2 그래프
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(100) # 정의역 구간 정의
y=x**2 # 수식 전개
plt.plot(x,y) # plot 생성
plt.show() # plot 그리기

실선 색상 변경
색상 기호
- b: Blue(파란색)
- g: Green(초록색)
- r: Red(빨간색)
- c: Cyan(청록색)
- m: Magenta(자홍색)
- y: Yellow(노란색)
- k: Black(검은색)
- w: White(흰색)
사용법
plt.plot(x,y,'r') #plot의 실선을 빨간색으로 설정
스타일 변경
| 기호 | 스타일 | 기호 | 스타일 |
| - | 실선(기본) | -- | 이음선 |
| -. | 점 이음선 | : | 점선 |
| . | 점 | , | 픽셀 |
| o | 원 | v | 역삼각형 |
| ^ | 정삼각형 | < | 좌 삼각형 |
| > | 우 삼각형 | l | 작은 역삼각형 |
| 2 | 작은 정삼각형 | 3 | 작은 좌 삼각형 |
| 4 | 작은 우 삼각형 | s | 사각형 |
| p | 오각형 | * | 별표 |
| D | 다이아몬드 표 | X | 엑스 표 |
예제 코드
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(20) # 정의역 구간 정의
f1 = x*5
f2 = x**2
f3 = x**2 +x*2
plt.plot(x,'r--') # 빨간색 이음선
plt.plot(f1,'g.') # 초록색 점
plt.plot(f2,'bv') # 파란색 역삼각형
plt.plot(f3,'ks') # 검은색 사각형
plt.show()

subplot
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(50) # 정의역 구간 정의
plt.subplot(2,2,1) # 2행 2열 중 1번째
plt.plot(x,x**2)
plt.subplot(2,2,2) # 2행 2열 중 2번째
plt.plot(x,x*5)
plt.subplot(223) # 2행 2열 중 3번째
plt.plot(x,np.sin(x))
plt.subplot(224) # 2행 2열 중 4번째
plt.plot(x,np.cos(x))
plt.show()

이미지 표시
import cv2
import matplotlib.pyplot as plt
img=cv2.imread('C:/Users/kycky/opencv/photo.jpg')
plt.imshow(img) # 이미지 표시
plt.show()

위의 이미지가 좀 이상하다. 원인은 해당 이미지는 컬러채널을 R,G,B 순으로 읽어야 하는데 openCV는 B,G,R 순으로 읽기 때문에 색이 반전되어 보이게 된 것이다. 이를 위해서는 컬러채널 순서를 바꾸어 줄 필요가 있다.
import cv2
import matplotlib.pyplot as plt
img=cv2.imread('C:/Users/kycky/opencv/photo.jpg')
plt.imshow(img[:,:,::-1]) # 이미지 컬러채널 변경해서 표시
plt.xticks([]) # x 좌표 눈금 제거
plt.yticks([]) # y 좌표 눈금 제거
plt.show()

여러 이미지 동시에 출력
import cv2
import matplotlib.pyplot as plt
import numpy as np
img1=cv2.imread('C:/Users/kycky/opencv/photo.jpg')
img2=cv2.imread('C:/Users/kycky/opencv/dog1.jpg')
img3=cv2.imread('C:/Users/kycky/opencv/dog2.jpg')
plt.subplot(1,3,1)
plt.imshow(img1[:,:,(2,1,0)])
plt.xticks([]);plt.yticks([])
plt.subplot(1,3,2)
plt.imshow(img2[:,:,(2,1,0)])
plt.xticks([]);plt.yticks([])
plt.subplot(1,3,3)
plt.imshow(img3[:,:,(2,1,0)])
plt.xticks([]);plt.yticks([])
plt.show()

'Opencv 공부' 카테고리의 다른 글
| [openCV] 관심 영역 지정하기 (1) | 2023.05.09 |
|---|---|
| [openCV] NumPy (3) | 2023.05.06 |
| [openCV] 각종 이벤트 함수 모음 (1) | 2023.05.04 |
| [openCV] 창 관리하기 (0) | 2023.05.01 |
| [openCV] 그림 그리기 (2) | 2023.04.30 |