메모
전체 예제 코드를 다운로드 하려면 여기 를 클릭 하십시오.
개요 _mpl_toolkits.axes_grid1
axes_grid1
다음과 같은 기능을 제공합니다.
추가 제약 조건(컬러바와 이미지의 높이 일치 또는 이미지 간 패딩 고정)을 충족하면서 고정 종횡비로 이미지를 표시하는 축의 레이아웃을 용이하게 하는 도우미 클래스( ImageGrid , RGBAxes , AxesDivider )
ParasiteAxes (동일한 Axes에서 다른 데이터(예: 다른 y-스케일)를 플롯할 수 있도록 하는 twinx/twiny와 같은 기능);
AnchoredArtists (범례와 유사하게 고정된 위치에 배치되는 사용자 지정 아티스트).
axis_grid1 #
이미지 그리드 #
Matplotlib에서 축 위치와 크기는 일반적으로 정규화된 그림 좌표(0 = 왼쪽 아래, 1 = 오른쪽 위)로 지정되므로 이미지 간에 고정(절대) 패딩을 달성하기 어렵습니다.
ImageGrid
이러한 패딩을 달성하는 데 사용할 수 있습니다. 자세한 API 정보는 문서를 참조하세요.
각 축의 위치는 그리기 시간에 결정되므로( AxesDivider 참조 ) 전체 그리드의 크기가 지정된 사각형에 맞도록(예: 축의 측면). 이 예에서 그림 크기를 변경하더라도 축 사이의 안쪽 여백은 고정됩니다.
같은 열의 축은 x축을 공유하고 같은 행의 축은 y축을 공유합니다( , 의 의미
sharex
에서sharey
). 또한 같은 열에 있는 축은 모두 같은 너비를 가지며 같은 행에 있는 축은 모두 같은 높이를 가집니다. 이러한 너비와 높이는 축의 보기 제한(xlim 또는 ylim)에 비례하여 조정됩니다.
아래 예시는 ImageGrid로 무엇을 할 수 있는지 보여줍니다.
AxesDivider 클래스 #
배후에서 ImageGrid(및 아래에 설명된 RGBAxes)
AxesDivider
는 그리기 시간에 축의 위치를 계산하는 역할을 하는 에 의존합니다.
사용자는 일반적으로 를 호출하여 구분자를 직접 인스턴스화할 필요가 없습니다 AxesDivider
. 대신
make_axes_locatable
축에 대한 구분선을 만드는 데 사용할 수 있습니다.
ax = subplot(1, 1, 1)
divider = make_axes_locatable(ax)
AxesDivider.append_axes
그런 다음 원래 축의 지정된 측면("왼쪽", "오른쪽", "위쪽", "아래쪽")에 새 축을 만드는 데 사용할 수 있습니다.
높이(또는 너비)가 기본 축과 동기화된 컬러바 #
AxesDivider가 있는 scatter_hist.py #
히스토그램 예제가 포함 된 산점도make_axes_locatable
는 다음을 사용하여 다시 작성할 수 있습니다 .
axScatter = plt.subplot()
axScatter.scatter(x, y)
axScatter.set_aspect(1.)
# create new axes on the right and on the top of the current axes.
divider = make_axes_locatable(axScatter)
axHistx = divider.append_axes("top", size=1.2, pad=0.1, sharex=axScatter)
axHisty = divider.append_axes("right", size=1.2, pad=0.1, sharey=axScatter)
# the scatter plot:
# histograms
bins = np.arange(-lim, lim + binwidth, binwidth)
axHistx.hist(x, bins=bins)
axHisty.hist(y, bins=bins, orientation='horizontal')
아래의 전체 소스 코드를 참조하십시오.
AxesDivider를 사용 하는 Scatter Histogram(Locatable Axes) 은 Matplotlib의 히스토그램이 있는 원래 Scatter 플롯에 비해 몇 가지 이점이 있습니다. 예를 들어 x축 또는 y축이 그에 따라 공유되는 경우에도 산점도의 종횡비를 설정할 수 있습니다.
ParasiteAxes #
ParasiteAxes는 위치가 호스트 축과 동일한 Axes입니다. 그리기 시간에 위치가 조정되므로 호스트가 위치(예: 이미지)를 변경해도 작동합니다.
대부분의 경우 먼저 기생 축을 만드는 데 사용할 수 있는 몇 가지 방법을 제공하는 호스트 축을 만듭니다. 그것들은 twinx
,
( matplotlib에서
및과 twiny
유사함 ) 및 입니다. 호스트 축과 기생 축의 데이터 좌표 사이를 매핑하는 임의 변환을 수행합니다. 그만큼twinx
twiny
twin
twin
draw
기생 축의 메서드는 호출되지 않습니다. 대신, 호스트 축은 기생 축의 아티스트를 수집하고 마치 호스트 축에 속하는 것처럼 그립니다. 즉, 기생 축의 아티스트는 호스트 축의 아티스트에 병합된 다음 해당 zorder에 따라 그려집니다. 호스트 및 기생 축은 일부 축 동작을 수정합니다. 예를 들어 플롯 라인의 색상 주기는 호스트와 기생충 간에 공유됩니다. 또한 호스트의 범례 명령은 기생 축에 선을 포함하는 범례를 생성합니다. host_subplot
호스트 축을 생성하려면 또는
host_axes
명령 을 사용할 수 있습니다 .
예 1. 트윈스 #
예 2. 쌍둥이 #
twin
변환 인수가 없으면 기생 축이 호스트와 동일한 데이터 변환을 갖는다고 가정합니다. 이는 위쪽(또는 오른쪽) 축이 다른 눈금 위치, 눈금 레이블 또는 아래쪽(또는 왼쪽) 축에 대한 눈금 포맷터를 갖기를 원할 때 유용할 수 있습니다.
ax2 = ax.twin() # now, ax2 is responsible for "top" axis and "right" axis
ax2.set_xticks([0., .5*np.pi, np.pi, 1.5*np.pi, 2*np.pi],
labels=["0", r"$\frac{1}{2}\pi$",
r"$\pi$", r"$\frac{3}{2}\pi$", r"$2\pi$"])
트윈을 사용하는 보다 정교한 예입니다. 호스트 축에서 x-제한을 변경하면 그에 따라 기생 축의 x-제한이 변경됩니다.
앵커드아티스트 #
axes_grid1.anchored_artists
전설과 유사하게 (축) bbox에 위치가 고정된 아티스트 모음입니다. 이러한 아티스트는 에서 파생되며 offsetbox.OffsetBox
아티스트는 캔버스 좌표로 그려야 합니다. 임의 변환에 대한 지원은 제한적입니다. 예를 들어 아래 예제의 타원은 데이터 좌표에서 너비와 높이를 갖습니다.
인셋로케이터 #
또한보십시오
Axes.inset_axes
그리고 Axes.indicate_inset_zoom
메인 라이브러리에서
axes_grid1.inset_locator
AnchoredArtist와 유사하게 상위 축의 고정된 위치에 삽입 축을 배치하는 도우미 클래스 및 함수를 제공합니다.
inset_locator.inset_axes
크기가 고정되거나 상위 축의 고정 비율인 삽입 축을 생성합니다.
inset_axes = inset_axes(parent_axes,
width="30%", # width = 30% of parent_bbox
height=1., # height = 1 inch
loc='lower left')
너비가 상위 축의 30%이고 높이가 1인치로 고정된 삽입 축을 생성합니다.
inset_locator.zoomed_inset_axes
데이터 스케일이 부모 축의 데이터 스케일에 몇 가지 요인을 곱한 삽입 축을 생성합니다.
inset_axes = zoomed_inset_axes(ax,
0.5, # zoom = 0.5
loc='upper right')
데이터 스케일이 상위 축의 절반인 삽입 축을 생성합니다. 이는 상위 축에서 확대된 영역을 표시하는 데 유용할 수 있습니다.
inset_locator.mark_inset
인셋 축으로 표시되는 영역의 위치를 표시할 수 있습니다.
RGB축 #
RGBAxes는 RGB 합성 이미지를 편리하게 보여주기 위한 도우미 클래스입니다. ImageGrid와 마찬가지로 축이 차지하는 영역이 지정된 사각형에 맞도록 축의 위치가 조정됩니다. 또한 각 축의 x축과 y축을 공유합니다.
from mpl_toolkits.axes_grid1.axes_rgb import RGBAxes
fig = plt.figure()
ax = RGBAxes(fig, [0.1, 0.1, 0.8, 0.8], pad=0.0)
r, g, b = get_rgb() # r, g, b are 2D images.
ax.imshow_rgb(r, g, b)
AxesDivider #
이 mpl_toolkits.axes_grid1.axes_divider
모듈은 드로잉 시간에 이미지 집합의 축 위치를 조정하는 도우미 클래스를 제공합니다.
axes_size
각 축의 크기를 결정하는 데 사용되는 단위 클래스를 제공합니다. 예를 들어 고정 크기를 지정할 수 있습니다.Divider
축 위치를 계산하는 클래스입니다. 주어진 직사각형 영역을 여러 영역으로 나눕니다. 구분선은 구분 기준이 될 가로 및 세로 크기 목록을 설정하여 초기화됩니다. 그런 다음new_locator()
축의 axes_locator를 설정하는 데 사용할 수 있는 호출 가능 개체를 반환하는 를 사용합니다.
여기에서는 다음 레이아웃을 달성하는 방법을 보여줍니다. 축을 3x4 그리드에 배치하려고 합니다( Divider
행 인덱스가
그리드의 맨 아래 (!)에서 시작됨).
+--------+--------+--------+--------+
| (2, 0) | (2, 1) | (2, 2) | (2, 3) |
+--------+--------+--------+--------+
| (1, 0) | (1, 1) | (1, 2) | (1, 3) |
+--------+--------+--------+--------+
| (0, 0) | (0, 1) | (0, 2) | (0, 3) |
+--------+--------+--------+--------+
하단 행의 고정 높이는 2(인치)이고 상단 두 행의 높이 비율은 2(중간) 대 3(상단)입니다. (예를 들어 그리드의 크기가 7인치인 경우 하단 행은 2인치, 중간 행도 2인치, 상단 행은 3인치가 됩니다.)
이러한 제약 조건은
axes_size
모듈의 클래스, 즉 다음 을 사용하여 지정됩니다.
from mpl_toolkits.axes_grid1.axes_size import Fixed, Scaled
vert = [Fixed(2), Scaled(2), Scaled(3)]
(보다 일반적으로 axes_size
클래스
get_size(renderer)
는 부동 소수점 쌍(상대 크기 및 절대 크기)을 반환하는 메서드를 정의합니다. Fixed(2).get_size(renderer)
반환 ;
반환 .)(0, 2)
Scaled(2).get_size(renderer)
(2, 0)
Divider
다음 제약 조건을 사용하여 개체 를 초기화 합니다.
rect = [0.2, 0.2, 0.6, 0.6] # Position of the grid in the figure.
vert = [Fixed(2), Scaled(2), Scaled(3)] # As above.
horiz = [...] # Some other horizontal constraints.
divider = Divider(fig, rect, horiz, vert)
그런 다음 주어진 그리드 항목에 대한 인스턴스 Divider.new_locator
를 만드는 데 사용합니다.AxesLocator
locator = divider.new_locator(nx=0, ny=1) # Grid entry (1, 0).
축 위치 지정을 담당하도록 합니다.
ax.set_axes_locator(locator)
는 AxesLocator
첫 번째 열과 두 번째 행에서 셀의 위치와 크기를 반환하는 콜러블 객체입니다.
여러 셀에 걸쳐 있는 로케이터는 다음과 같이 만들 수 있습니다.
# Columns #0 and #1 ("0-2 range"), row #1.
locator = divider.new_locator(nx=0, nx1=2, ny=1)
예를 참조하십시오.
x 또는 y 데이터 제한(AxesX 및 AxesY)에 따라 각 축의 크기를 조정할 수도 있습니다.