- 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 Inset 그래프 삽입하기¶
Inset 그래프는 추가로 데이터를 표현하기 위해 삽입한 작은 그래프입니다.
이 페이지에서는 Matplotlib 그래프에 Inset 그래프를 삽입하는 방법에 대해 소개합니다.
■ Table of Contents
1) 기본 사용¶
예제1¶
import matplotlib.pyplot as plt
import numpy as np
plt.style.use('default')
plt.rcParams['figure.figsize'] = (6, 6)
plt.rcParams['font.size'] = 14
data = np.random.rand(100, 100)
fig, ax = plt.subplots()
ax.imshow(data, extent=(0, 100, 0, 100), origin='lower')
# Inset Graph
axins = ax.inset_axes([0.5, 0.5, 0.45, 0.45])
axins.imshow(data[10:20, 10:20], extent=(10, 20, 10, 20), origin='lower')
plt.show()
우선 np.random.rand()를 사용해서 그래프에 표시할 데이터 (data)를 만듭니다.
matplotlib.axes.Axes.inset_axes()는 현재 Axes에 inset axes를 추가합니다.
입력한 리스트 [0.5, 0.5, 0.45, 0.45]는 현재 inset axes가 표시될 영역의 x0, y0, width, height 입니다.
imshow()를 사용해서 data[10:20, 10:20] 영역을 inset 그래프에 나타나도록 했습니다.
결과는 아래와 같습니다.
예제2¶
import matplotlib.pyplot as plt
import numpy as np
plt.style.use('default')
plt.rcParams['figure.figsize'] = (6, 6)
plt.rcParams['font.size'] = 14
data = np.random.rand(100, 100)
fig, ax = plt.subplots()
ax.imshow(data, extent=(0, 100, 0, 100), origin='lower')
# Inset Graph
axins = ax.inset_axes([0.5, 0.5, 0.45, 0.45])
axins.imshow(data[10:20, 10:20], extent=(10, 20, 10, 20), origin='lower')
axins.set_xticklabels('')
axins.set_yticklabels('')
for axis in ['top', 'bottom', 'left', 'right']:
axins.spines[axis].set_linewidth(3)
axins.spines[axis].set_color('r')
plt.show()
axins.set_xticklabels(), axins.set_yticklabels()는 inset 그래프의 눈금 레이블을 지정합니다.
예제에서는 눈금 레이블이 표시되지 않도록 했습니다.
axins.spines[‘top’], axins.spines[‘bottom’], axins.spines[‘left’], axins.spines[‘right’]는 inset 그래프의 네 방향의 축입니다.
set_linewidth(), set_color()를 사용해서 선의 두께와 색상을 지정했습니다.
결과는 아래와 같습니다.
2) Inset 영역 표시하기¶
예제1¶
import matplotlib.pyplot as plt
import numpy as np
plt.style.use('default')
plt.rcParams['figure.figsize'] = (6, 6)
plt.rcParams['font.size'] = 14
data = np.random.rand(100, 100)
fig, ax = plt.subplots()
ax.imshow(data, extent=(0, 100, 0, 100), origin='lower')
# Inset Graph
axins = ax.inset_axes([0.5, 0.5, 0.45, 0.45])
axins.imshow(data[10:20, 10:20], extent=(10, 20, 10, 20), origin='lower')
axins.set_xticklabels('')
axins.set_yticklabels('')
for axis in ['top', 'bottom', 'left', 'right']:
axins.spines[axis].set_linewidth(3)
axins.spines[axis].set_color('r')
indicator = ax.indicate_inset_zoom(axins)
plt.show()
ax.indicate_inset_zoom(axins)는 axins에 표시되는 영역을 ax에 표시합니다.
결과는 아래와 같습니다.
다음 예제에서는 영역을 표시하는 사각형과 직선의 색상과 두께를 변경해 보겠습니다.
예제2¶
import matplotlib.pyplot as plt
import numpy as np
plt.style.use('default')
plt.rcParams['figure.figsize'] = (6, 6)
plt.rcParams['font.size'] = 14
data = np.random.rand(100, 100)
fig, ax = plt.subplots()
ax.imshow(data, extent=(0, 100, 0, 100), origin='lower')
# Inset Graph
axins = ax.inset_axes([0.5, 0.5, 0.45, 0.45])
axins.imshow(data[10:20, 10:20], extent=(10, 20, 10, 20), origin='lower')
axins.set_xticklabels('')
axins.set_yticklabels('')
for axis in ['top', 'bottom', 'left', 'right']:
axins.spines[axis].set_linewidth(3)
axins.spines[axis].set_color('r')
indicator = ax.indicate_inset_zoom(axins)
indicator[0].set_linewidth(3)
indicator[0].set_edgecolor('r')
indicator[0].set_color('r')
indicator[1][0].set_linewidth(3)
indicator[1][1].set_linewidth(3)
indicator[1][2].set_linewidth(3)
indicator[1][3].set_linewidth(3)
indicator[1][1].set_color('r')
indicator[1][2].set_color('r')
plt.show()
ax.indicate_inset_zoom(axins)는 그래프 상에 영역을 표시하는 사각형 (patches.Rectangle)과 직선 (patches.ConnectionPatch)을 튜플의 형태로 반환합니다.
indicator[0]는 영역을 표시하는 사각형 패치 (patches.Rectangle)입니다.
set_linewidth(), set_edgecolor(), set_color()를 사용해서 선의 두께와 색상 등을 지정했습니다.
indicator[1]는 연결선 패치 (patches.ConnectionPatch)입니다.
마찬가지로 set_linewidth(), set_color()를 사용해서 색상을 지정했습니다.
결과는 아래와 같습니다.