Canvas, Render, and Event : Backend 구성 Layers
Matplotlib의 backend는 크게
FigureCanvas, Renderer, Event layer로 구성되어 있음.
2023.07.20 - [Python/matplotlib] - [matplotlib] : backend 란
각 layer는 Artist 및 Scripting Layer에서 정의한 그래프를 실제로 그리고 사용자와의 상호작용을 위한 backend 기능을 나누어 담당하며, 주요 클래스는 다음과 같음.
FigureCanvas Layer
- 소개:
- FigureCanvas는 그림(Figure)을 포함하고 있는 Canvas(캔버스)를 나타냅니다.
- Matplotlib에서 Figure가 그려지는 영역으로 실제 세계에서 하얀 canvas에 그림을 그리는 데에서 이름이 유래됨.
- Figure 인스턴스가 자신이 그려지는 FigureCanvas 객체에 대한 reference를 포함하고 있음.
- TkInter나 Qt 와 같은 GUI Toolkit에서 matplotlib의 Figure 를 사용할 때 많이 이용됨.
- "GUI Toolkit"과 "matplotlib의 Figure"간의 연결을 담당.
- GUI Toolkit과 연동을 지원하는 FigureCanvas 객체는 자신의 영역에서 발생하는 event 들의 처리를 위한 callback 함수등의 연결시키는 메서드등을 가짐.
- 주요 클래스:
FigureCanvasBase
:- 모든 FigureCanvas 클래스의 기본 클래스.
- 주로 상속되어서만 사용되지 직접 이용하는 경우는 거의 없음.
FigureCanvasAgg
:- Agg(antigrain geometry) 렌더러를 사용하여 Figure를 그리는 클래스.
- 이는 고해상도 PNG 파일을 생성하는 데 자주 사용됨.
FigureCanvasTkAgg
:- Tkinter GUI에서 Figure를 표시하는 데 사용됨.
FigureCanvasQtAgg
:- Qt GUI에서 Figure를 표시하는 데 사용됨.
2024.04.29 - [Python/PySide PyQt] - [PySide6] matplotlib 이용하기
Renderer Layer
- 소개:
- Renderer는 그림을 그리는 실제 작업을 수행.
- plt.show() 또는 plt.savefig() 등의 호출시 현재의 backend와 연결된 render layer가 실제 drawing을 수행.
- Artist Layer와 Scripting Layer가 추상적으로 그린(정의한) Figure를 실제 원하는 포맷의 output으로 그리는(출력하는) 역할을 담당함.
- 출력포맷에 따른 다양한 render 존재.
- 다양한 출력 형식에 맞게 그림을 렌더링.
- Renderer는 그림을 그리는 실제 작업을 수행.
- 주요 클래스:
RendererBase
:- 모든 렌더러 클래스의 기본 클래스.
RendererAgg
:- Agg 기반의 렌더링을 수행하는 클래스.
- 고품질의 안티 앨리어싱을 지원.
RendererPDF
:- PDF 파일 형식으로 렌더링하는 클래스.
RendererSVG
:- SVG 파일 형식으로 렌더링하는 클래스.
Event Layer
- 소개:
- Event layer는 사용자 입력(예: 마우스 클릭, 키보드 입력 등)을 처리하여 상호작용을 가능하게 함.
- 즉, 이 레이어는 그래프와의 상호작용을 관리합니다.
- TkInter나 Qt 등의 GUI Toolkit 과 같이 개발될 때 많이 이용됨.
- 주요 클래스:
Event
:- 모든 이벤트 클래스의 기본 클래스.
MouseEvent
:- 마우스와 관련된 이벤트를 나타내는 클래스.
KeyEvent
:- 키보드와 관련된 이벤트를 나타내는 클래스.
PickEvent
:- 피킹(picking) 이벤트를 나타내는 클래스.
- 그래프 상의 특정 객체를 선택하는 데 사용됨.
2024.05.19 - [Python/PySide PyQt] - [PySide] FigureCanvas.mpl_connect
https://matplotlib.org/stable/users/explain/figure/event_handling.html
같이 보면 좋은 자료들
2024.06.03 - [Python/matplotlib] - [matplotlib] Summary : 작성중
728x90
'Python > matplotlib' 카테고리의 다른 글
[matplotlib] Summary : 작성중 (2) | 2024.06.03 |
---|---|
[matplotlib] Object Oriented Style Tutorial (1) | 2024.06.03 |
[matplotlib] Tutorial: Scripting Style (0) | 2024.06.03 |
[matplotlib] Scripting Layer vs. Artist Layer (0) | 2024.06.02 |
[Etc] Anti-Grain Geometry (AGG) (0) | 2024.04.29 |