본문 바로가기

AI Theory/Visualization

[파이썬 캐글 뽀개기] Matplotlib 라이브러리

파이썬 시각화 이론편

Matplotlib 라이브러리

  • 파이썬 데이터 시각화의 기본 뼈대
  • 복잡하고 다루기 어려움 >>> seaborn 라이브러리 등장

 

matplotlib 그래프를 구현하는 방법

  1. pyplot api
    • matplotlib.pyplot 모듈의 함수들을 각각 불러와서 구현.
    • 사용 편리
  2. 객체 지향 api
    • matplotlib에 구현된 객체 지향 라이브러리를 직접 활용.
    • 그래프의 각 구성요소 다양하게 제어하고 싶을 때.
    • 사용하기 복잡
  3. pyplot API + 객체 지향 API
    • 실전에서 자주 사용
    • 기존 객체지향API와 다르게 PLT클래스 활용

 

Seaborn 라이브러리

  • 그림 그리기 easy
  • 통계 결과를 간편하고 아름답게

 

파이썬 시각화 그래프의 기본 용어

  • Figure
    • 전체 그래프 그림
  • Axes
    • 그래프가 그려지는 figure의 하위 섹션
    • title, x-label, y-label 등의 값 통제
    • 하나의 figure은 여러개의 axes를 가짐
  • Axis
    • Axes의 하위요소.
    • 그래프의 척도를 나타내는 숫자 선.
    • 2차원 그래프: x axis, y axis
    • 3차원 그래프: x,y,z axis
  • Label
    • figure 등 다양한 요소의 이름
    • x axis label, y axis label, graph label 등
  • Legend
    • axes 안에 여러개의 그림이 있으면 입력값에 따른 각각의 label 존재
  • Title
    • 각각의 axes에 주어진 이름
    • figure 또한 각각의 title을 가짐
  • Ticklabels
    • 각 axis의 여러개의 동일한 bin으로 나뉜 값의 범위
  • Spines
    • figure의 가장자리. 각각의 axes는 4개의 spine을 가짐
  • Grid
    • 그래프 점 좌표 쉽게 읽도록 하기 위한 영역 나눔

 

 

 

Matplotlib의 구성

3가지 레이어로 구성: Backend layer, Artist Layer, Scripting layer

scripting layer
(pyplot)
Artist layer
primitive layer
(line, Rectangle, Polygon, Circle, Text)
Composite layer
(Axis, Ticks, Figures)
Backend Layer
Figure canvas layer
(encompasses area in which figures are drawn)
Renderer layer
(Knows how to draw on figure canvas)
Event Layer
(User inputs like keyboard and mouse clicks)

 

Artist layer는 객체 지향의 개념을 도입해 다양하게 커스텀화하며 Figure artist라는 객체를 가짐.

 

이 객체는 Render를 활용해 그래프를 그림.

 

즉 각각의 subplot은 artist layer의 한 객체로 인식되며 이 영역을 객체 지향 API라고 부름.

 

2. 객체지향 방식으로 그림을 그리는 방법

  1. Backend layer에 해당하는 FigureCanvas 불러오기
  2. Artist layer에 있는 Figure 영역 불러오기
  3. Figure 객체를 만들어서 생성자(Constructor) 만들기
  4. 가상의 데이터 만들기
  5. Artist layer에서 Axes 객체 만들기
  6. Axes 객체에 있는 hist() 호출하기
  7. Axes 객체의 set_title() 호출하기
  8. Figure 객체에 구현된 Axes를 담아서 패키징화하고 내보내기

 

3. Pyplot API + 객체 지향 API

  1. plt 클래스를 활용해 figure 객체 생성 == backend layer 호출
  2. Axes 선언 == Artist Layer 호출
  3. Fig, Ax 두 줄로 선언하거나 fig, ax = plt.subplot()와 같이 사용