본문 바로가기
Python Library/Matplotlib

[Matplotlib] 시각화 패키지 (1)

by goatlab 2022. 2. 22.
728x90
반응형
SMALL

시각화 패키지

 

맷플롯리브 (Matplotlib)는 파이썬에서 자료를 차트 (chart)나 플롯 (plot)으로 시각화하는 패키지이다. 맷플롯리브는 다음과 같은 정형화된 차트나 플롯 이외에도 저수준 API를 사용한 다양한 시각화 기능을 제공한다.

 

  • 라인 플롯 (line plot)
  • 스캐터 플롯 (scatter plot)
  • 컨투어 플롯 (contour plot)
  • 서피스 플롯 (surface plot)
  • 바 차트 (bar chart)
  • 히스토그램 (histogram)
  • 박스 플롯 (box plot)

 

pyplot 서브패키지

 

맷플롯리브 패키지에는 pyplot 라는 서브패키지가 존재한다. 이 pyplot 서브패키지는 매트랩 (matlab) 이라는 수치해석 소프트웨어의 시각화 명령을 거의 그대로 사용할 수 있도록 맷플롯리브 의 하위 API를 포장 (wrapping)한 명령어 집합을 제공한다. 간단한 시각화 프로그램을 만드는 경우에는 pyplot 서브패키지의 명령만으로도 충분하다. 다음에 설명할 명령어들도 별도의 설명이 없으면 pyplot 패키지의 명령라고 생각하면 된다.

 

맷플롯리브 패키지를 사용할 때는 보통 다음과 같이 주 패키지는 mpl 이라는 별칭 (alias)으로 임포트하고 pyplot 서브패키지는 plt 라는 다른 별칭으로 임포트하여 사용하는 것이 관례이므로 여기에서도 이러한 방법을 사용한다.

 

import matplotlib as mpl
import matplotlib.pyplot as plt

 

주피터 노트북을 사용하는 경우에는 다음처럼 %matplotlib 매직 (magic) 명령으로 노트북 내부에 그림을 표시하도록 지정해야 한다.

 

%matplotlib inline

 

라인 플롯

 

간단한 플롯은 선을 그리는 라인 플롯 (line plot)이다. 라인 플롯은 데이터가 시간, 순서 등에 따라 어떻게 변화하는지 보여주기 위해 사용한다.

 

plt.title("Plot")
plt.plot([1, 4, 9, 16])
plt.show()

- title 함수는 제목을 표시한다.
 
- show 함수는 시각화 명령을 실제로 차트로 렌더링(rendering)하고 마우스 움직임 등의 이벤트를 기다리라는 지시이다. 주피터 노트북에서는 셀 단위로 플롯 명령을 자동 렌더링 해주므로 show 명령이 필요없지만 일반 python 인터프리터로 가동되는 경우를 대비하여 항상 마지막에 실행하도록 한다. show 명령을 주면 마지막 플롯 명령으로부터 반환된 플롯 객체의 표현도 가려주는 효과가 있다.
plt.title("x ticks")
plt.plot([10, 20, 30, 40], [1, 4, 9, 16])
plt.show()

 

한글폰트 사용

 

맷플롯리브에서 한글을 사용하려면 다음과 같이 한글 폰트를 적용해야 한다. 당연히 해당 폰트는 컴퓨터에 깔려 있어야 한다.

 

# 리눅스
sudo apt install -y fonts-nanum*
sudo fc-cache -fv
rm ~/.cache/matplotlib -rf

 

폰트를 설치한 후에는 다음 명령으로 원하는 폰트가 설치되어 있는지 확인한다.

 

import matplotlib.font_manager

matplotlib.font_manager._rebuild()
sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist if f.name.startswith("Nanum")])
---
['Nanum Brush Script',
 'Nanum Pen Script',
 'NanumBarunGothic',
 'NanumBarunGothic',
 'NanumBarunGothic',
 'NanumBarunGothic',
 'NanumBarunpen',
 'NanumBarunpen',
 'NanumGothic',
 'NanumGothic',
 'NanumGothic',
 'NanumGothic',
 'NanumGothic Eco',
 'NanumGothic Eco',
 'NanumGothic Eco',
 'NanumGothicCoding',
 'NanumGothicCoding',
 'NanumMyeongjo',
 'NanumMyeongjo',
 'NanumMyeongjo',
 'NanumMyeongjo Eco',
 'NanumMyeongjo Eco',
 'NanumMyeongjo Eco',
 'NanumSquare',
 'NanumSquare',
 'NanumSquare',
 'NanumSquare',
 'NanumSquareRound',
 'NanumSquareRound',
 'NanumSquareRound',
 'NanumSquareRound']

 

설치된 폰트를 사용하는 방법은 크게 두가지이다.

 

  • rc parameter 설정으로 이후의 그림 전체에 적용
  • 인수를 사용하여 개별 텍스트 관련 명령에만 적용

 

한글 문자열은 항상 유니코드를 사용해야 한다.

 

rc parameter를 설정하여 그림 전체에 적용한다.

 

# 폰트 설정
mpl.rc('font', family='NanumGothic')

# 유니코드에서  음수 부호설정
mpl.rc('axes', unicode_minus=False)

 

정상적으로 폰트가 설치되고 rc parameter가 제대로 설정되었다면 다음 코드를 실행하였을 때 한글이 잘 보여야 한다.

 

plt.title('한글 제목')
plt.plot([10, 20, 30, 40], [1, 4, 9, 16])
plt.xlabel("엑스축 라벨")
plt.ylabel("와이축 라벨")
plt.show()

 

객체마다 별도의 폰트를 적용하고 싶을 때는 다음과 같이 폰트 패밀리, 색상, 크기를 정하여 플롯 명령의 fontdict 인수에 넣는다.

 

font1 = {'family': 'NanumMyeongjo', 'size': 24, 
         'color':  'black'}
font2 = {'family': 'NanumBarunpen', 'size': 18, 'weight': 'bold',
         'color':  'darkred'}
font3 = {'family': 'NanumBarunGothic', 'size': 12, 'weight': 'light',
         'color':  'blue'}

plt.plot([10, 20, 30, 40], [1, 4, 9, 16])
plt.title('한글 제목', fontdict=font1)
plt.xlabel('엑스 축', fontdict=font2)
plt.ylabel('와이 축', fontdict=font3)
plt.show()

 

https://datascienceschool.net/01%20python/05.01%20%EC%8B%9C%EA%B0%81%ED%99%94%20%ED%8C%A8%ED%82%A4%EC%A7%80%20%EB%A7%B7%ED%94%8C%EB%A1%AF%EB%A6%AC%EB%B8%8C%20%EC%86%8C%EA%B0%9C.html

 

5.1 시각화 패키지 맷플롯리브 소개 — 데이터 사이언스 스쿨

.ipynb .pdf to have style consistency -->

datascienceschool.net

 

728x90
반응형
LIST

'Python Library > Matplotlib' 카테고리의 다른 글

[Matplotlib] 시각화 패키지 (4)  (0) 2022.02.22
[Matplotlib] 시각화 패키지 (3)  (0) 2022.02.22
[Matplotlib] 시각화 패키지 (2)  (0) 2022.02.22
[Matplotlib] 이미지맵 (imshow)  (0) 2021.12.22
Matplotlib  (0) 2021.12.22