본문 바로가기
Python/matplotlib

[matplotlib] Canvas, Render, and Event : Backend 구성 Layers

by ds31x 2024. 6. 11.

Canvas, Render, and Event : Backend 구성 Layers

Matplotlib의 backend는 크게
FigureCanvas, Renderer, Event layer로 구성되어 있음.

2023.07.20 - [Python/matplotlib] - [matplotlib] : backend 란

 

[matplotlib] : backend 란

matplotlib: backend란 matplotlib의 backend 관련자료를 정리한 문서임.Matplotlib ArchitectureMatplotlib 아키텍트는 다음과 같이 크게 3가지 레이어로 구성된다.Backend Layer :상위 layer에서 graph를 생성하는데 초점

ds31x.tistory.com

 

각 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 이용하기

 

[PySide6] matplotlib 이용하기

matplotlib 이용하기PyQt, PySide에서는 PyQtGraph를 통해서도 graph등을 그릴 수 있으나,대중적으로 사용되는 matplotlib를 이용할 수도 있다.PyQtGraph는 Qt vector 기반의 QGraphicsScene를 통해 상호작용이 가능한

ds31x.tistory.com


Renderer Layer

  • 소개:
    • Renderer는 그림을 그리는 실제 작업을 수행.
      • plt.show() 또는 plt.savefig() 등의 호출시 현재의 backend와 연결된 render layer가 실제 drawing을 수행.
    • Artist Layer와 Scripting Layer가 추상적으로 그린(정의한) Figure를 실제 원하는 포맷의 output으로 그리는(출력하는) 역할을 담당함.
      • 출력포맷에 따른 다양한 render 존재.
    • 다양한 출력 형식에 맞게 그림을 렌더링.
  • 주요 클래스:
    • 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

 

[PySide] FigureCanvas.mpl_connect

FigureCanvas.mpl_connect FigureCanvas 클래스는Matplotlib 이 이용하여 그려진 그래픽 요소와의 interaction(상호작용)을 위한 event handling을 구현하기 위해,mpl_connect method를 제공함.더보기Matplotlib는 wypython, tkint

ds31x.tistory.com

https://matplotlib.org/stable/users/explain/figure/event_handling.html

 

Event handling and picking — Matplotlib 3.9.0 documentation

Event handling and picking Matplotlib works with a number of user interface toolkits (wxpython, tkinter, qt, gtk, and macOS) and in order to support features like interactive panning and zooming of figures, it is helpful to the developers to have an API fo

matplotlib.org

 


같이 보면 좋은 자료들

2024.06.03 - [Python/matplotlib] - [matplotlib] Summary : 작성중

 

[matplotlib] Summary : 작성중

Introduction2024.03.04 - [Python/matplotlib] - [matplotlib] matplotlib란 [matplotlib] matplotlib란Matplotlib은 Python에서 가장 널리 사용되는 Data Visualization Library임. matplotlib를 통해 chart(차트), image(이미지) 및, 다양한 vi

ds31x.tistory.com

 


 

728x90