[Matplotlib] 에 대하여

전주미·2024년 4월 5일

Matplotlib

목록 보기
1/2
post-thumbnail

Matplotlib: Visualization with Python

Matplotlib는 Python 프로그래밍 언어 및 수학적 확장 NumPy 라이브러리를 활용한 플로팅 라이브러리이다. 애플리케이션에 플롯을 포함 하기 위한 객체 지향 API를 제공한다.
보통 matplotlib의 pyplot이 대표적이라 할 수 있다.
matplotlib을 이용하면 우리가 이전에 알아본 numpy나 pandas에서 사용되는 자료구조를 쉽게 시각화 할 수 있는 특징이 있으며, Matplotlib Architecture는 크게 3가지 레이어로 구성된다.

1. Backend Layer

상위 layer에서 graph를 생성하는데 초점을 두는 것과 달리, 생성된 graph를 실제 시스템에서 어떻게 보여줄지(또는 저장할지)를 처리한다.

2. Artist Layer

OOP 를 통해 customization을 수행할 수 있다.

3. Scripting Layer

scripting을 통해 실제 graph를 그리는 부분이다.

Backend?

Matplotlib는 다양한 환경에서 graph를 표시하고, 다양한 출력 format으로 저장할 수 있다.
일반적으로 matplotlib를 사용하는 경우는 크게 다음과 같이 구성된다.

  1. Python shell에서 commnad를 입력하여 matplotlib의 graph를 interactive하게 그려야 할 때
  1. Jupyter notebooks에서 데이터 분석을 위해 inline plots 을 matplotlib로 그리고 확인할 때(Jupyter notebook 유저의 경우, matplotlib의 결과가 out session에 나타나는 것이 유리하므로
    %matplotlib inline 옵션을 사용한다.)
  1. PyQt or PyGObject를 통해 만들어지는 GUI application에서 graph등을 그리기 위해
    matplotlib를 내장시킬 때
  1. 수치해석 분석이나 시뮬레이션 등에서 png, svg등의 postscript image를 생성시키는 batch script로 사용할 때
  1. django나 flask등으로 구현되는 web application server에서 graph를 그리는 기능을 제공하기 위해서 matplotlib를 도입할 때

위와 같이 다양한 상황과 output format을 지원하기 위해 Matplotlib는 각각의 경우에 대한 backend를 제공한다.

backend는 artist layer나 scripting layer등에서 생성한 graph에 대해 실제로 시스템 환경에서 display시키기 위해 필요한 처리 또는 output format으로 encoding하기 위해 필요한 처리를 담당한다.

위의 다양한 경우를 위해 사용자가 graph등을 만들기 위해 작성하는 code는 동일하지만, 해당 code를 통해 실제 graph를 디스플레이하거나 파일로 저장하는 등의 여러 경우의 처리는 각 경우마다 다르다. 이를 backend가 알아서 해준다.
matplotlib 용어로 애기하면, 일관된 frontend interface는 유지하면서 다양한 환경 및 출력포맷을 제공하기 위해 backend를 도입한 것이다.

*matplotlib의 backend는 다음과 같이 크게 2가지이다.

  • user interface backend
    : PyQt/PySide, PyGObject, Tkinter, wxPython, or macOS/Cocoa 등을 사용한다.
    : interactive가 가능한 backend.

  • hardcopy backend (PNG, SVG, PDF, PS)
    : image file을 생성. "non-interactive backends"라고도 불린다
    : static backend라고도 불린다.

profile
data dreamer

0개의 댓글