pcolormesh 그리드 및 음영 #

axes.Axes.pcolormesh그리드 배치 방법 과 pcolor그리드 포인트 사이의 음영에 대한 몇 가지 옵션이 있습니다.

일반적으로 Z 의 모양이 (M, N)인 경우 키워드 인수 의 인수에 따라 그리드 XY 를 모양 (M+1, N+1) 또는 (M, N) 으로 지정할 수 있습니다. shading아래에서 벡터 x 를 길이 N 또는 N+1로 지정하고 y 를 길이 M 또는 M+1로 지정하고 내부적으로 입력 벡터에서 pcolormesh메쉬 행렬 XY 를 만듭니다.

import matplotlib.pyplot as plt
import numpy as np

플랫 셰이딩 #

최소한의 가정을 가진 그리드 사양은 shading='flat' 그리드가 각 차원의 데이터보다 하나 더 큰 경우, 즉 모양이 (M+1, N+1) 입니다. 이 경우 XY 는 Z 의 값으로 색상이 지정된 사변형의 모서리를 지정합니다 . 여기서 우리 는 (4, 6)인 XY 로 (3, 5) 사변형 의 모서리를 지정합니다 .

nrows = 3
ncols = 5
Z = np.arange(nrows * ncols).reshape(nrows, ncols)
x = np.arange(ncols + 1)
y = np.arange(nrows + 1)

fig, ax = plt.subplots()
ax.pcolormesh(x, y, Z, shading='flat', vmin=Z.min(), vmax=Z.max())


def _annotate(ax, x, y, title):
    # this all gets repeated below:
    X, Y = np.meshgrid(x, y)
    ax.plot(X.flat, Y.flat, 'o', color='m')
    ax.set_xlim(-0.7, 5.2)
    ax.set_ylim(-0.7, 3.2)
    ax.set_title(title)

_annotate(ax, x, y, "shading='flat'")
shading='플랫'

플랫 셰이딩, 같은 모양의 그리드 #

그러나 종종 XY 가 Z 의 모양과 일치하는 데이터가 제공됩니다 . 이것은 다른 shading유형에 대해 의미가 있지만 더 이상 허용되지 않습니다 shading='flat'(Matplotlib v3.3부터 MatplotlibDeprecationWarning 발생). 역사적으로 Matplotlib 는 이 경우 Matlab의 동작과 일치시키기 위해 Z 의 마지막 행과 열을 자동으로 삭제했습니다 . 이 동작이 여전히 필요한 경우 마지막 행과 열을 수동으로 삭제하면 됩니다.

x = np.arange(ncols)  # note *not* ncols + 1 as before
y = np.arange(nrows)
fig, ax = plt.subplots()
ax.pcolormesh(x, y, Z[:-1, :-1], shading='flat', vmin=Z.min(), vmax=Z.max())
_annotate(ax, x, y, "shading='flat': X, Y, C same shape")
shading='flat': X, Y, C 같은 모양

가장 가까운 음영, 같은 모양 그리드 #

일반적으로 데이터의 행과 열을 삭제하는 것은 사용자가 X , YZ 를 모두 같은 모양으로 만들 때 의미하는 바가 아닙니다. 이 경우 Matplotlib는 shading='nearest'색상이 지정된 사변형을 격자점에 배치하고 중앙에 배치합니다.

올바른 모양이 아닌 그리드가 전달 shading='nearest' 되면 오류가 발생합니다.

fig, ax = plt.subplots()
ax.pcolormesh(x, y, Z, shading='nearest', vmin=Z.min(), vmax=Z.max())
_annotate(ax, x, y, "shading='nearest'")
음영 = '가장 가까운'

자동 음영 #

사용자는 코드에서 사용할 것을 자동으로 선택하기를 원할 수 있습니다. 이 경우 X , YZshading='auto' 의 모양을 기반으로 '플랫' 또는 '가장 가까운' 셰이딩을 사용할지 여부를 결정합니다 .

fig, axs = plt.subplots(2, 1, constrained_layout=True)
ax = axs[0]
x = np.arange(ncols)
y = np.arange(nrows)
ax.pcolormesh(x, y, Z, shading='auto', vmin=Z.min(), vmax=Z.max())
_annotate(ax, x, y, "shading='auto'; X, Y, Z: same shape (nearest)")

ax = axs[1]
x = np.arange(ncols + 1)
y = np.arange(nrows + 1)
ax.pcolormesh(x, y, Z, shading='auto', vmin=Z.min(), vmax=Z.max())
_annotate(ax, x, y, "shading='auto'; X, Y one larger than Z (flat)")
음영='자동';  X, Y, Z: 같은 모양(가장 가까운), 음영='자동';  X, Y는 Z보다 하나 더 큼(플랫)

고로 셰이딩 #

사변형의 색상이 그리드 점 사이에서 선형으로 보간되는 Gouraud 음영 도 지정할 수 있습니다. X , Y , Z 의 모양은 동일해야 합니다.

fig, ax = plt.subplots(constrained_layout=True)
x = np.arange(ncols)
y = np.arange(nrows)
ax.pcolormesh(x, y, Z, shading='gouraud', vmin=Z.min(), vmax=Z.max())
_annotate(ax, x, y, "shading='gouraud'; X, Y same shape as Z")

plt.show()
음영 = 'gouraud';  X, Y Z와 같은 모양

참조

다음 함수, 메서드, 클래스 및 모듈의 사용이 이 예제에 표시됩니다.

스크립트의 총 실행 시간: (0분 2.324초)

Sphinx-Gallery에서 생성한 갤러리