- Matplotlib Tutorial - 파이썬으로 데이터 시각화하기
- Matplotlib 설치하기
- Matplotlib 기본 사용
- Matplotlib 숫자 입력하기
- Matplotlib 축 레이블 설정하기
- Matplotlib 범례 표시하기
- Matplotlib 축 범위 지정하기
- Matplotlib 선 종류 지정하기
- Matplotlib 마커 지정하기
- Matplotlib 색상 지정하기
- Matplotlib 그래프 영역 채우기
- Matplotlib 축 스케일 지정하기
- Matplotlib 여러 곡선 그리기
- Matplotlib 그리드 설정하기
- Matplotlib 눈금 표시하기
- Matplotlib 타이틀 설정하기
- Matplotlib 수평선/수직선 표시하기
- Matplotlib 막대 그래프 그리기
- Matplotlib 수평 막대 그래프 그리기
- Matplotlib 산점도 그리기
- Matplotlib 3차원 산점도 그리기
- Matplotlib 히스토그램 그리기
- Matplotlib 에러바 표시하기
- Matplotlib 파이 차트 그리기
- Matplotlib 히트맵 그리기
- Matplotlib 여러 개의 그래프 그리기
- Matplotlib 컬러맵 설정하기
- Matplotlib 텍스트 삽입하기
- Matplotlib 수학적 표현 사용하기
- Matplotlib 그래프 스타일 설정하기
- Matplotlib 이미지 저장하기
- Matplotlib 객체 지향 인터페이스 1
- Matplotlib 객체 지향 인터페이스 2
- Matplotlib 축 위치 조절하기
- Matplotlib 이중 Y축 표시하기
- Matplotlib 두 종류의 그래프 그리기
- Matplotlib 박스 플롯 그리기
- Matplotlib 바이올린 플롯 그리기
- Matplotlib 다양한 도형 삽입하기
- Matplotlib 다양한 패턴 채우기
- Matplotlib 애니메이션 사용하기 1
- Matplotlib 애니메이션 사용하기 2
- Matplotlib 3차원 Surface 표현하기
- Matplotlib 트리맵 그리기 (Squarify)
- Matplotlib Inset 그래프 삽입하기
- Python Tutorial
- NumPy Tutorial
- Matplotlib Tutorial
- PyQt5 Tutorial
- BeautifulSoup Tutorial
- xlrd/xlwt Tutorial
- Pillow Tutorial
- Googletrans Tutorial
- PyWin32 Tutorial
- PyAutoGUI Tutorial
- Pyperclip Tutorial
- TensorFlow Tutorial
- Tips and Examples
Matplotlib 다양한 도형 삽입하기¶
matplotlib.patches 모듈은 그래프에 다양한 2D 도형을 표현하기 위한 클래스를 포함하고 있습니다.
이 페이지에서는 Matplotlib 그래프에 다양한 도형을 표현하는 방법을 소개합니다.
■ Table of Contents
Matplotlib의 그림에 표현되는 모든 성분들은 Artist 클래스의 서브클래스입니다.
Patch는 면 색 (facecolor)과 테두리 색 (edgecolor)을 갖는 2D 도형을 그래프의 캔버스 영역에 표현하기 위한 Artist 클래스의 서브클래스입니다.
matplotlib.patches 모듈에 포함된 주요한 도형 클래스는 아래와 같습니다.
Arc(xy, width, height[, angle, theta1, theta2]) |
타원 호 (An elliptical arc) |
Arrow(x, y, dx, dy[, width]) |
화살표 패치 |
Circle(xy[, radius]) |
원 패치 |
CirclePolygon(xy[, radius, resolution]) |
원 패치의 다각형-근사 |
ConnectionPatch(xyA, xyB, coordsA[, …]) |
두 점을 연결하는 패치 |
Ellipse(xy, width, height[, angle]) |
타원 패치 |
FancyArrow(x, y, dx, dy[, width, …]) |
화살표 머리와 길이를 독립적으로 조절 가능한 화살표 패치 |
Polygon(xy[, closed]) |
일반적인 다각형 패치 |
Rectangle(xy, width, height[, angle]) |
사각형 패치 |
RegularPolygon(xy, numVertices[, radius, …]) |
정규 다각형 패치 |
Wedge(center, r, theta1, theta2[, width]) |
쐐기 모양 패치 |
1) 사각형 그리기 (Rectangle)¶
앞에서 소개했던 바이올린 플롯의 특정 위치에 사각형 (Rectangle)과 텍스트를 추가해 보겠습니다.
예제¶
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import numpy as np
# 1. 기본 스타일 설정
plt.style.use('default')
plt.rcParams['figure.figsize'] = (4, 3)
plt.rcParams['font.size'] = 12
# 2. 데이터 준비
np.random.seed(0)
data_a = np.random.normal(0, 2.0, 1000)
data_b = np.random.normal(-3.0, 1.5, 500)
data_c = np.random.normal(1.2, 1.5, 1500)
# 3. 그래프 그리기
fig, ax = plt.subplots()
violin = ax.violinplot([data_a, data_b, data_c], showmeans=True)
ax.set_ylim(-10.0, 10.0)
ax.set_xticks(np.arange(1, 4))
ax.set_xticklabels(['A', 'B', 'C'])
ax.set_xlabel('Data Type')
ax.set_ylabel('Distribution')
violin['bodies'][0].set_facecolor('blue')
violin['bodies'][1].set_facecolor('red')
violin['bodies'][2].set_facecolor('green')
violin['cbars'].set_edgecolor('gray')
violin['cmaxes'].set_edgecolor('gray')
violin['cmins'].set_edgecolor('gray')
violin['cmeans'].set_edgecolor('gray')
# 4. 사각형 그리기
ax.add_patch(
patches.Rectangle(
(1.8, 1.0), # (x, y)
0.4, 1.5, # width, height
edgecolor = 'deeppink',
facecolor = 'lightgray',
fill=True,
))
# 5. 텍스트 삽입하기
ax.text(1.5, 3.5, 'Max of Data B')
plt.show()
우선 matplotlib.patches 모듈을 불러옵니다.
ax.add_patch() 메서드는 입력한 Patch를 그래프 영역에 추가합니다.
patches.Rectangle() 패치는 그래프에 사각형을 표현하기 위해 사용합니다.
(x, y) 위치와 width, height를 순서대로 입력하고, edgecolor와 facecolor를 지정합니다.
fill=True로 지정하면 도형의 면에 색이 채워집니다.
text() 메서드로 x=1.5, y=3.5 위치에 ‘Max of Data B’ 텍스트를 삽입했습니다.
결과는 아래와 같습니다.
2) 화살표 그리기 (Arrow)¶
이번에는 그래프에 화살표 (Arrow)와 텍스트를 추가해 보겠습니다.
예제¶
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import numpy as np
# 1. 기본 스타일 설정
plt.style.use('default')
plt.rcParams['figure.figsize'] = (4, 3)
plt.rcParams['font.size'] = 12
# 2. 데이터 준비
np.random.seed(0)
data_a = np.random.normal(0, 2.0, 1000)
data_b = np.random.normal(-3.0, 1.5, 500)
data_c = np.random.normal(1.2, 1.5, 1500)
# 3. 그래프 그리기
fig, ax = plt.subplots()
violin = ax.violinplot([data_a, data_b, data_c], showmeans=True)
ax.set_ylim(-10.0, 10.0)
ax.set_xticks(np.arange(1, 4))
ax.set_xticklabels(['A', 'B', 'C'])
ax.set_xlabel('Data Type')
ax.set_ylabel('Value')
violin['bodies'][0].set_facecolor('blue')
violin['bodies'][1].set_facecolor('red')
violin['bodies'][2].set_facecolor('green')
violin['cbars'].set_edgecolor('gray')
violin['cmaxes'].set_edgecolor('gray')
violin['cmins'].set_edgecolor('gray')
violin['cmeans'].set_edgecolor('gray')
# 4. 화살표 그리기
ax.add_patch(
patches.Arrow(
2.0, 4.0,
0.0, -1.5,
width=0.3,
edgecolor = 'deeppink',
facecolor = 'lightgray'
))
# 5. 텍스트 삽입하기
ax.text(1.5, 5.0, 'Max of Data B')
plt.show()
patches.Arrow() 패치는 그래프에 화살표 도형을 표현하기 위해 사용합니다.
화살표 시작점 위치 x, y와 위치 변화량 dx, dy를 순서대로 입력합니다.
width는 화살표 도형의 너비입니다.
text() 메서드로 x=1.5, y=5.0 위치에 ‘Max of Data B’ 텍스트를 삽입했습니다.
결과는 아래와 같습니다.
3) 다각형 그리기 (Polygon)¶
이번에는 그래프에 다각형 (Polygon)과 텍스트를 추가해 보겠습니다.
예제¶
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import numpy as np
# 1. 기본 스타일 설정
plt.style.use('default')
plt.rcParams['figure.figsize'] = (4, 3)
plt.rcParams['font.size'] = 12
# 2. 데이터 준비
np.random.seed(0)
data_a = np.random.normal(0, 2.0, 1000)
data_b = np.random.normal(-3.0, 1.5, 500)
data_c = np.random.normal(1.2, 1.5, 1500)
# 3. 그래프 그리기
fig, ax = plt.subplots()
violin = ax.violinplot([data_a, data_b, data_c], showmeans=True)
ax.set_ylim(-10.0, 10.0)
ax.set_xticks(np.arange(1, 4))
ax.set_xticklabels(['A', 'B', 'C'])
ax.set_xlabel('Data Type')
ax.set_ylabel('Value')
violin['bodies'][0].set_facecolor('blue')
violin['bodies'][1].set_facecolor('red')
violin['bodies'][2].set_facecolor('green')
violin['cbars'].set_edgecolor('gray')
violin['cmaxes'].set_edgecolor('gray')
violin['cmins'].set_edgecolor('gray')
violin['cmeans'].set_edgecolor('gray')
# 4. 다각형 그리기
ax.add_patch(
patches.Polygon(
((1.9, 4.0), (2.0, 2.5), (2.1, 4.0)),
closed=True,
edgecolor = 'deeppink',
facecolor = 'lightgray'
))
# 5. 텍스트 삽입하기
ax.text(1.5, 5.0, 'Max of Data B')
plt.show()
patches.Polygon() 패치는 그래프에 다각형 (Polygon)을 표현하기 위해 사용합니다.
아래 그림과 같이 각각의 꼭지점 위치 (x, y) 튜플의 어레이를 입력합니다.
closed=True로 지정하면 닫힌 다각형의 형태로 그려집니다.
text() 메서드로 x=1.5, y=5.0 위치에 ‘Max of Data B’ 텍스트를 삽입했습니다.
결과는 아래와 같습니다.