개요 _mpl_toolkits.axes_grid1

axes_grid1다음과 같은 기능을 제공합니다.

  • 추가 제약 조건(컬러바와 이미지의 높이 일치 또는 이미지 간 패딩 고정)을 충족하면서 고정 종횡비로 이미지를 표시하는 축의 레이아웃을 용이하게 하는 도우미 클래스( ImageGrid , RGBAxes , AxesDivider )

  • ParasiteAxes (동일한 Axes에서 다른 데이터(예: 다른 y-스케일)를 플롯할 수 있도록 하는 twinx/twiny와 같은 기능);

  • AnchoredArtists (범례와 유사하게 고정된 위치에 배치되는 사용자 지정 아티스트).

../../_images/sphx_glr_demo_axes_grid_001.png

axis_grid1 #

이미지 그리드 #

Matplotlib에서 축 위치와 크기는 일반적으로 정규화된 그림 좌표(0 = 왼쪽 아래, 1 = 오른쪽 위)로 지정되므로 이미지 간에 고정(절대) 패딩을 달성하기 어렵습니다. ImageGrid이러한 패딩을 달성하는 데 사용할 수 있습니다. 자세한 API 정보는 문서를 참조하세요.

../../_images/sphx_glr_simple_axesgrid_001.png
  • 각 축의 위치는 그리기 시간에 결정되므로( AxesDivider 참조 ) 전체 그리드의 크기가 지정된 사각형에 맞도록(예: 축의 측면). 이 예에서 그림 크기를 변경하더라도 축 사이의 안쪽 여백은 고정됩니다.

  • 같은 열의 축은 x축을 공유하고 같은 행의 축은 y축을 공유합니다( , 의 의미 sharex에서 sharey). 또한 같은 열에 있는 축은 모두 같은 너비를 가지며 같은 행에 있는 축은 모두 같은 높이를 가집니다. 이러한 너비와 높이는 축의 보기 제한(xlim 또는 ylim)에 비례하여 조정됩니다.

    ../../_images/sphx_glr_simple_axesgrid2_001.png

아래 예시는 ImageGrid로 무엇을 할 수 있는지 보여줍니다.

../../_images/sphx_glr_demo_axes_grid_001.png

AxesDivider 클래스 #

배후에서 ImageGrid(및 아래에 설명된 RGBAxes) AxesDivider는 그리기 시간에 축의 위치를 ​​계산하는 역할을 하는 에 의존합니다.

사용자는 일반적으로 를 호출하여 구분자를 직접 인스턴스화할 필요가 없습니다 AxesDivider. 대신 make_axes_locatable축에 대한 구분선을 만드는 데 사용할 수 있습니다.

ax = subplot(1, 1, 1)
divider = make_axes_locatable(ax)

AxesDivider.append_axes그런 다음 원래 축의 지정된 측면("왼쪽", "오른쪽", "위쪽", "아래쪽")에 새 축을 만드는 데 사용할 수 있습니다.

높이(또는 너비)가 기본 축과 동기화된 컬러바 #

../../_images/sphx_glr_simple_colorbar_001.png

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')

아래의 전체 소스 코드를 참조하십시오.

../../_images/sphx_glr_scatter_hist_locatable_axes_001.png

AxesDivider를 사용 하는 Scatter Histogram(Locatable Axes) 은 Matplotlib의 히스토그램이 있는 원래 Scatter 플롯에 비해 몇 가지 이점이 있습니다. 예를 들어 x축 또는 y축이 그에 따라 공유되는 경우에도 산점도의 종횡비를 설정할 수 있습니다.

ParasiteAxes #

ParasiteAxes는 위치가 호스트 축과 동일한 Axes입니다. 그리기 시간에 위치가 조정되므로 호스트가 위치(예: 이미지)를 변경해도 작동합니다.

대부분의 경우 먼저 기생 축을 만드는 데 사용할 수 있는 몇 가지 방법을 제공하는 호스트 축을 만듭니다. 그것들은 twinx, ( matplotlib에서 및과 twiny유사함 ) 및 입니다. 호스트 축과 기생 축의 데이터 좌표 사이를 매핑하는 임의 변환을 수행합니다. 그만큼twinxtwinytwintwindraw 기생 축의 메서드는 호출되지 않습니다. 대신, 호스트 축은 기생 축의 아티스트를 수집하고 마치 호스트 축에 속하는 것처럼 그립니다. 즉, 기생 축의 아티스트는 호스트 축의 아티스트에 병합된 다음 해당 zorder에 따라 그려집니다. 호스트 및 기생 축은 일부 축 동작을 수정합니다. 예를 들어 플롯 라인의 색상 주기는 호스트와 기생충 간에 공유됩니다. 또한 호스트의 범례 명령은 기생 축에 선을 포함하는 범례를 생성합니다. host_subplot호스트 축을 생성하려면 또는 host_axes명령 을 사용할 수 있습니다 .

예 1. 트윈스 #

../../_images/sphx_glr_parasite_simple_001.png

예 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$"])
../../_images/sphx_glr_simple_axisline4_001.png

트윈을 사용하는 보다 정교한 예입니다. 호스트 축에서 x-제한을 변경하면 그에 따라 기생 축의 x-제한이 변경됩니다.

../../_images/sphx_glr_parasite_simple2_001.png

앵커드아티스트 #

axes_grid1.anchored_artists전설과 유사하게 (축) bbox에 위치가 고정된 아티스트 모음입니다. 이러한 아티스트는 에서 파생되며 offsetbox.OffsetBox아티스트는 캔버스 좌표로 그려야 합니다. 임의 변환에 대한 지원은 제한적입니다. 예를 들어 아래 예제의 타원은 데이터 좌표에서 너비와 높이를 갖습니다.

../../_images/sphx_glr_simple_anchored_artists_001.png

인셋로케이터 #

또한보십시오

Axes.inset_axes그리고 Axes.indicate_inset_zoom메인 라이브러리에서

axes_grid1.inset_locatorAnchoredArtist와 유사하게 상위 축의 고정된 위치에 삽입 축을 배치하는 도우미 클래스 및 함수를 제공합니다.

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')

데이터 스케일이 상위 축의 절반인 삽입 축을 생성합니다. 이는 상위 축에서 확대된 영역을 표시하는 데 유용할 수 있습니다.

../../_images/sphx_glr_inset_locator_demo_001.png

inset_locator.mark_inset인셋 축으로 표시되는 영역의 위치를 ​​표시할 수 있습니다.

../../_images/sphx_glr_inset_locator_demo2_001.png

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)
../../_images/sphx_glr_demo_axes_rgb_001.png

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)

예를 참조하십시오.

../../_images/sphx_glr_simple_axes_divider1_001.png

x 또는 y 데이터 제한(AxesX 및 AxesY)에 따라 각 축의 크기를 조정할 수도 있습니다.

../../_images/sphx_glr_simple_axes_divider3_001.png

Sphinx-Gallery에서 생성한 갤러리