"Inset" is a small graph
which is presented within the other graph.
다음 예제는
- 일정부분을 확대해서 보여주는 inset 의 예제임.
- (matplotlib 사이트의 예제로 원본은 아래 Reference를 참고)
Axes
객체에서
imshow
의 경우,extent
파라메터를 통해 보여줄 x, y의 범위를 지정할 수 있음.
inset_axes
method가 inset을 그리기 위한 Axes
객체를 반환 해주며, 다음의 parameters를 가짐.
- 1st positional parameter:
- inset이 그려질 영역을 나타내는 x 좌표, y 좌표, width, heigt로
- 호출에 사용된 Axes 객체에서 해당 영역에 inset이 추가됨.
xlim
:- inset 이 그릴 데이터의 x 범위.
- 아래 예제의 경우 inset에 그려지는 데이터는 x값이
-1.5
~-0.9
범위 내에 있어야 그려짐.
ylim
:- inset 이 그릴 데이터의 y 범위.
- 아래 예제의 경우 inset에 그려지는 데이터는 y값이
-2.5
~-1.9
범위 내에 있어야 그려짐.
indicate_inset_zoom
method:
- inset의
Axes
객체를 첫번째 인자로 받으며, - 해당
Axes
객체의xlim
,ylim
에 따라 박스를 호출한Axes
객체에 그림. - 선의 색깔은
edgecolor
을 이용하여 할당. - 호출한
Axes
객체에서 inset이 그려지 실제 영역이 어디인지를 표시해줌.
import numpy as np
from matplotlib import cbook
from matplotlib import pyplot as plt
fig, ax = plt.subplots()
# make data
Z = cbook.get_sample_data("axes_grid/bivariate_normal.npy") # 15x15 array
Z2 = np.zeros((150, 150))
ny, nx = Z.shape
Z2[30:30+ny, 30:30+nx] = Z
extent = (-3, 4, -4, 3)
ax.imshow(Z2, extent=extent, origin="lower")
# inset axes....
x1, x2, y1, y2 = -1.5, -0.9, -2.5, -1.9 # subregion of the original image
axins = ax.inset_axes(
[0.5, 0.5, 0.47, 0.47],
xlim=(x1, x2), ylim=(y1, y2), xticklabels=[], yticklabels=[])
axins.imshow(Z2, extent=extent, origin="lower")
ax.indicate_inset_zoom(axins, edgecolor="black")
plt.show()
References
'Python > matplotlib' 카테고리의 다른 글
[matplotlib] patches: 도형 그리기. (0) | 2024.03.18 |
---|---|
[matplotlib] matplotlib란 (0) | 2024.03.04 |
[matplotlib] Visualization: Graph, Chart, Diagram, Figure (1) | 2024.01.22 |
[matplotlib] pseudocolor plot: pcolor (1) | 2024.01.22 |
[matplotlib] Layout Managers: GridSpec and subplot2grid (1) | 2024.01.22 |