본문 바로가기
Python/matplotlib

[matplotlib] Scripting Layer vs. Artist Layer

by ds31x 2024. 6. 2.

Scripting Layer vs. Artist Layer

Matplotlib는

  • Scripting Layer와 (이를 이용시 scripting style 이라고 불림)
  • Artist Layer 라는 (이를 이용시 object-oriented style 이라고 불림)

두 가지 주요 인터페이스를 plot을 그리기 위해 제공함.

 

이 외에 backend layer를 가지는데 이는 사용자가 plots를 그릴 때 이용하는 인터페이스가 아님.

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

 

[Python] matplotlib : backend란

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

ds31x.tistory.com


참고: Matplotlib에서 plot이란

Matplotlib에서 plotdata visualization를 의미하며, 다양한 형태의

  • Graph와
  • Chart를

만드는 과정 또는 그 결과물을 가르킴.

2024.01.22 - [Python/matplotlib] - [matplotlib] Visualization: Graph, Chart, Diagram, Figure

 

[matplotlib] Visualization: Graph, Chart, Diagram, Figure

Visualization: Graph, Chart, Diagram, FigureVisualization데이터나 정보를 시각적 형태로 변환 또는 표현하는 방법 또는 과정을 가르킴.graph, chart, map 등등을 활용함.데이터를 쉽게 이해하거나 해석할 수 있도

ds31x.tistory.com


Scripting Layer

Scripting Layer는 간단하고 빠르게 plot을 작성할 수 있는 고수준의 인터페이스.

  • 이 인터페이스는 MATLAB과 유사한 방식으로 설계되어,
  • 특히 간단한 plot을 만들고 데이터를 visualization하는 데 매우 유용.
  • 주로 pyplot 모듈을 통해 코드가 이루어짐.

특징:

  • 간단한 사용법: 몇 줄의 코드로 plot을 생성.
  • 상태 기반: 내부 상태를 유지하며, 함수 호출에 따라 plot이 점진적으로 구축됨.
  • 빠른 플로팅: 간단한 visualization를 빠르게 할 수 있습니다.

예제 코드:

import matplotlib.pyplot as plt

# 데이터 준비
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

# 그래프 생성
plt.plot(x, y)

# 그래프 제목 추가
plt.title('Simple Line Plot')

# x축, y축 레이블 추가
plt.xlabel('X-axis')
plt.ylabel('Y-axis')

# 그래프 출력
plt.show()

함수 설명

  • plt.plot(x, y): x와 y 데이터를 사용하여 line graph를 그림.
  • plt.title('title'): 그래프의 title을 설정.
  • plt.xlabel('label'), plt.ylabel('label'): x축과 y축의 label을 설정.
  • plt.show(): graph를 화면에 출력.

Artist Layer

Artist Layer는 보다 세밀하고 복잡한 plot을 작성할 수 있는 저수준의 인터페이스.

  • 이 인터페이스는 Matplotlib의 핵심 구조를 이루며, plot의 각 구성 요소를 개별적으로 제어할 수 있는 방법을 제공함.
  • Figure, Axes, Axis, Line2D와 같은 객체를 직접 다룸.

2023.07.14 - [Python/matplotlib] - [Python] matplotlib 의 계층구조 및 Container : Figure, Axes, Axis

 

[Python] matplotlib 의 계층구조 및 Container : Figure, Axes, Axis

matplotlib의 계층구조 matplotlib는 다음과 같은 hierarchical structure를 가지고 있음. 일반적으로 Figure는 하나 이상의 Axes를 가지며(포함하며), Axes는 일반적으로 2개의 Axis 를 포함(2D image인 경우)함. (Axis

ds31x.tistory.com

 

특징:

  • 세밀한 제어: plot의 각 구성 요소를 직접 제어 가능.
  • 객체 지향적: plot의 각 요소가 object로 표현되며, 이들 object의 attributes과 methods를 통해 plot을 구성.
  • 유연성: 복잡한 visualization를 생성하고 customize 가능.

예제 코드:

import matplotlib.pyplot as plt

# 데이터 준비
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

# Figure와 Axes 객체 생성
fig, ax = plt.subplots()

# 그래프 생성
line, = ax.plot(x, y, 'r-')  # 'r-' means red solid line

# 그래프 제목 추가
ax.set_title('Simple Line Plot')

# x축, y축 레이블 추가
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')

# 그래프 출력
plt.show()

객체 설명

  • Figure: 모든 plotcontainer. 하나의 Figure는 여러 Axes 객체를 포함할 수 있음.
  • Axes: 실제 plot을 포함하는 객체.
  • Line2D: Axes에 의해 관리되는 2D line 객체.
  • Text: 그래프의 text 객체로, 제목, 축 레이블, 주석 등을 포함.

요약

  • Scripting Layer는 간단한 플롯을 빠르게 작성할 수 있는 고수준 인터페이스로, pyplot 모듈을 사용.
  • Artist Layer는 플롯의 각 요소를 세밀하게 제어할 수 있는 저수준 인터페이스로, 객체 지향적 접근 방식을 사용.
Scripting Style OOP Style
pyplot 함수를 통해 간단하게 그래프를 작성. Figure Axes 객체를 명시적으로 생성하여 세밀한 제어가 가능.
빠르고 간편하게 그래프를 그릴 수 있음. 복잡한 레이아웃과 여러 개의 plot을 다룰 때 유용.
초보자에게 적합. 고급 사용자에게 적합.
plt.plot(), plt.title(), plt.xlabel(), plt.ylabel(), plt.show() 등을 사용. ax.plot(), ax.set_title(), ax.set_xlabel(), ax.set_ylabel(), plt.show() 등을 사용.

같이 읽어보면 좋은 자료들

2024.03.04 - [Python/matplotlib] - [matplotlib] matplotlib란

 

[matplotlib] matplotlib란

Matplotlib은 Python에서 가장 널리 사용되는 Data Visualization Library임. matplotlib를 통해 chart(차트), image(이미지) 및, 다양한 visual representation of data이 가능함. pyplot 모듈을 통해 공학 계산 및 visualization으

ds31x.tistory.com

 

2023.07.14 - [Python/matplotlib] - [Python] matplotlib : Styling Artists and Labeling Plots

 

[Python] matplotlib : Styling Artists and Labeling Plots

Styling Artists color, linewidth, linestyle 등의 스타일의 변경이 matplotlib의 Artists에서 가능함. 일반적으로 스타일 변경은 다음 두가지 방법으로 이루어짐. Artist를 그리는 plot method를 호출할 때 argument로

ds31x.tistory.com

 


 

728x90

'Python > matplotlib' 카테고리의 다른 글

[matplotlib] Object Oriented Style Tutorial  (1) 2024.06.03
[matplotlib] Tutorial: Scripting Style  (0) 2024.06.03
[Etc] Anti-Grain Geometry (AGG)  (0) 2024.04.29
[matplotlib] patches: 도형 그리기.  (0) 2024.03.18
[matplotlib] matplotlib란  (0) 2024.03.04