Matplotlib Object Oriented Style Tutorial
1. Introduction
Matplotlib은 Python의 2D plotting library로, 다양한 그래프와 플롯을 생성하는 데 사용됨.
2024.03.04 - [Python/matplotlib] - [matplotlib] matplotlib란
Object Oriented Style은 Scripting Style에 비해 더 많은 유연성과 제어를 제공함.
2024.06.02 - [Python/matplotlib] - [matplotlib] Scripting Layer vs. Artist Layer
2023.07.20 - [Python/matplotlib] - [Python] matplotlib : backend란
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
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의 생성 방법
Figure
와 Axes
를 한 번에 생성하는 간단한 방법도 있음.
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
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
2023.08.08 - [Python/matplotlib] - [Python] matplotlib : x축과 y축을 그리기.
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은 복잡한 플롯을 작성하고 세부적으로 제어할 수 있는 강력한 방법임.Figure
와 Axes
객체를 생성하고 데이터를 plot하는 기본 개념을 이해하면 더욱 다양한 시각화를 구현할 수 있음.
같이 읽어보면 좋은 자료들
https://matplotlib.org/stable/tutorials/index.html
2023.07.21 - [Python/matplotlib] - [Python] matplotlib : line 및 marker 설정하기.
2024.03.18 - [Python/matplotlib] - [matplotlib] patches: 도형 그리기.
'Python > matplotlib' 카테고리의 다른 글
[matplotlib] Canvas, Render, and Event : Backend 구성 Layers (1) | 2024.06.11 |
---|---|
[matplotlib] Summary : 작성중 (2) | 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 |