본문 바로가기
Python/matplotlib

[matplotlib] Object Oriented Style Tutorial

by ds31x 2024. 6. 3.

Matplotlib Object Oriented Style Tutorial

1. Introduction

Matplotlib은 Python의 2D plotting library로, 다양한 그래프와 플롯을 생성하는 데 사용됨.

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

 

Object Oriented Style은 Scripting Style에 비해 더 많은 유연성과 제어를 제공함.

2024.06.02 - [Python/matplotlib] - [matplotlib] Scripting Layer vs. Artist Layer

 

[matplotlib] Scripting Layer vs. Artist Layer

Scripting Layer vs. Artist LayerMatplotlib는Scripting Layer와 (이를 이용시 scripting style 이라고 불림)Artist Layer 라는 (이를 이용시 object-oriented style 이라고 불림)두 가지 주요 인터페이스를 plot을 그리기 위해

ds31x.tistory.com

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


2. 기본적인 Figure와 Axes 생성

Object Oriented Style 에서 그래프를 그리기 위해 먼저 Figure 객체와 하나 이상의 Axes 객체를 생성해야 함.

  • Figure는 전체 그래프의 컨테이너이고,
  • Axes는 실제 데이터가 그려지는 영역임.
import matplotlib.pyplot as plt

# Figure 객체 생성
fig = plt.figure()  # 전체 그림을 위한 Figure 객체를 생성함

# Axes 객체 추가
ax = fig.add_subplot(1, 1, 1)  # 1행 1열의 그리드에 첫 번째 Axes를 추가함

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


3. Plotting 데이터

Axes 객체를 사용하여 데이터를 플롯할 수 있음.

 

plot() 메소드는 line graph 를 그리는 데 사용됨.

# 데이터 생성
x = [1, 2, 3, 4, 5]
y = [10, 20, 25, 30, 40]

# 데이터를 플롯
ax.plot(x, y)  # Axes 객체의 plot() 메소드를 사용하여 데이터를 플롯함

# 그래프 표시
plt.show()  # 전체 Figure를 화면에 표시함

5. Figure와 Axes의 생성 방법

FigureAxes를 한 번에 생성하는 간단한 방법도 있음.

plt.subplots() 함수는 Figure와 하나 이상의 Axes를 동시에 생성함.

fig, ax = plt.subplots()  # Figure와 Axes 객체를 동시에 생성함

# 데이터 생성
x = [1, 2, 3, 4, 5]
y = [10, 20, 25, 30, 40]

# 데이터를 플롯
ax.plot(x, y)  # 데이터를 플롯

# 그래프 표시
plt.show()  # 전체 Figure를 화면에 표시함

2023.07.20 - [Python/matplotlib] - [Python] matplotlib: Figrure and Axes

 

[Python] matplotlib: Figrure and Axes

Figure and Axes Figure의 instance는 matplotlib가 그리는 그림 하나당 하나가 할당되며, 그림이 그려질 canvas 영역을 제공한다. Figure는 1개 이상의 Axes를 가질 수 있음. Axes의 instance는 Figure가 제공하는 전체

ds31x.tistory.com


5. 여러 개의 Axes 생성

하나의 Figure에 여러 개의 Axes를 생성하여 subplot을 만들 수 있음.

 

plt.subplots() 함수에 행과 열의 개수를 인자로 전달하여 여러 개의 Axes를 생성.

fig, axs = plt.subplots(2, 2)  # 2행 2열의 그리드에 4개의 Axes 객체를 생성함

# 데이터 생성
x = [1, 2, 3, 4, 5]
y = [10, 20, 25, 30, 40]

# 각 Axes에 데이터를 플롯
for ax in axs.flat:
    ax.plot(x, y)  # 각 Axes 객체에 데이터를 플롯함

# 그래프 표시
plt.show()  # 전체 Figure를 화면에 표시함

6. Axes 객체의 꾸미기

Axes 객체를 사용하여 그래프의 제목, 축 레이블 등을 설정할 수 있음.

  • set_title(),
  • set_xlabel(),
  • set_ylabel()

메소드를 사용하여 제목과 축 레이블을 설정함.

또한, 축을 숨기거나 그리드를 추가할 수도 있음.

fig, ax = plt.subplots()  # Figure와 Axes 객체를 동시에 생성함

# 데이터 생성
x = [1, 2, 3, 4, 5]
y = [10, 20, 25, 30, 40]

# 데이터를 플롯
ax.plot(x, y)  # 데이터를 플롯

# 제목과 축 레이블 설정
ax.set_title('Sample Plot')  # 그래프 제목 설정
ax.set_xlabel('X Axis')  # X축 레이블 설정
ax.set_ylabel('Y Axis')  # Y축 레이블 설정

# 그리드 추가
ax.grid(True)  # 그리드를 추가함

# 축 숨기기
ax.spines['top'].set_visible(False)  # 상단 축 숨기기
ax.spines['right'].set_visible(False)  # 우측 축 숨기기

# 그래프 표시
plt.show()  # 전체 Figure를 화면에 표시함

2023.07.14 - [Python/matplotlib] - [Python] matplotlib : Axis Scale and Ticks

 

[Python] matplotlib : Axis Scale and Ticks

각 Axes객체는 2개 이상의 Axis 객체를 가짐 (2D chart일 경우, x-axis와 y-axis를 가지므로 2개임). Axis는 주로 축의 scale과 tick locator, tick formatter를 제어한다. Scales 많이 사용되는 scale은 다음과 같음 'linear

ds31x.tistory.com

2023.08.08 - [Python/matplotlib] - [Python] matplotlib : x축과 y축을 그리기.

 

[Python] matplotlib : x축과 y축을 그리기.

schematic graphs 에서는 아래 그림처럼 $y$, $x$가 각각 0인 x-axis, y-axis가 그려지고 그 위에 graph가 그려지는 경우가 많다 (사람 손으로 그릴 경우 대부분이 이 경우이다.) matplotlib에서도 여러 방법으로

ds31x.tistory.com


7. Bar Chart 생성

Axes 객체를 사용하여 bar chart(막대 그래프)를 그릴 수 있음.

 

bar() 메소드는 bar chart를 생성하는 데 사용됨.

fig, ax = plt.subplots()  # Figure와 Axes 객체를 동시에 생성함

# 데이터 생성
categories = ['A', 'B', 'C', 'D']
values = [10, 20, 15, 25]

# 막대 그래프 생성
ax.bar(categories, values)  # Axes 객체의 bar() 메소드를 사용하여 막대 그래프를 생성함

# 제목과 축 레이블 설정
ax.set_title('Bar Chart')  # 그래프 제목 설정
ax.set_xlabel('Categories')  # X축 레이블 설정
ax.set_ylabel('Values')  # Y축 레이블 설정

# 그리드 추가
ax.grid(True, axis='y')  # Y축에 그리드를 추가함

# 축 숨기기
ax.spines['top'].set_visible(False)  # 상단 축 숨기기
ax.spines['right'].set_visible(False)  # 우측 축 숨기기

# 그래프 표시
plt.show()  # 전체 Figure를 화면에 표시함

8. Pie Chart 생성

Axes 객체를 사용하여 pie chart(원형 차트)를 그릴 수 있음.

pie() 메소드는 pie chart를 생성하는 데 사용됨.

fig, ax = plt.subplots()  # Figure와 Axes 객체를 동시에 생성함

# 데이터 생성
labels = ['A', 'B', 'C', 'D']
sizes = [20, 30, 25, 25]

# 원형 차트 생성
ax.pie(sizes, labels=labels, autopct='%1.1f%%')  # Axes 객체의 pie() 메소드를 사용하여 원형 차트를 생성함

# 제목 설정
ax.set_title('Pie Chart')  # 그래프 제목 설정

# 축 숨기기 (원형 차트는 축을 숨기는 것이 일반적임)
ax.axis('equal')  # 원형 차트가 원형으로 보이도록 함

# 그래프 표시
plt.show()  # 전체 Figure를 화면에 표시함

9. Scatter Plot 생성

Axes 객체를 사용하여 scattergram를 그릴 수 있음.

scatter() 메소드는 scatter plot를 생성하는 데 사용됨.

fig, ax = plt.subplots()  # Figure와 Axes 객체를 동시에 생성함

# 데이터 생성
x = [1, 2, 3, 4, 5]
y = [10, 20, 25, 30, 40]

# 산점도 생성
ax.scatter(x, y)  # Axes 객체의 scatter() 메소드를 사용하여 산점도를 생성함

# 제목과 축 레이블 설정
ax.set_title('Scatter Plot')  # 그래프 제목 설정
ax.set_xlabel('X Axis')  # X축 레이블 설정
ax.set_ylabel('Y Axis')  # Y축 레이블 설정

# 그리드 추가
ax.grid(True)  # 그리드를 추가함

# 축 숨기기
ax.spines['top'].set_visible(False)  # 상단 축 숨기기
ax.spines['right'].set_visible(False)  # 우측 축 숨기기

# 그래프 표시
plt.show()  # 전체 Figure를 화면에 표시함

10. 결론

Matplotlib의 Object Oriented Style은 복잡한 플롯을 작성하고 세부적으로 제어할 수 있는 강력한 방법임.
FigureAxes 객체를 생성하고 데이터를 plot하는 기본 개념을 이해하면 더욱 다양한 시각화를 구현할 수 있음.


같이 읽어보면 좋은 자료들

https://matplotlib.org/stable/tutorials/index.html

 

Tutorials — Matplotlib 3.9.0 documentation

 

matplotlib.org

 

2023.07.21 - [Python/matplotlib] - [Python] matplotlib : line 및 marker 설정하기.

 

[Python] matplotlib : line 및 marker 설정하기.

기본적으로 graph에서 사용되는 line 및 marker의 스타일 (유형, 굵기, 색, 마커)을 변경하는 것은 Axes에서 제공하는 다양한 graph를 그리는 모든 메서드들에서 필요하기 때문에 공통적인 parameters가 제

ds31x.tistory.com

2024.03.18 - [Python/matplotlib] - [matplotlib] patches: 도형 그리기.

 

[matplotlib] patches: 도형 그리기.

patches 는 모듈은 Artist 의 subclass인 Patch 클래스들을 제공하여, 다음의 다양한 2D 도형을 쉽게 그릴 수 있게 해줌. Arc (호), Circle (원), CirclePolygon (원의 근사 다각형), Ellipse (타원), Arrow (화살표), FancyA

ds31x.tistory.com

 


 

728x90