줄 사이 영역 채우기 #

이 예제는 를 사용 fill_between하여 두 선 사이의 영역을 색칠하는 방법을 보여줍니다.

import matplotlib.pyplot as plt
import numpy as np

기본 사용법 #

매개변수 y1y2 는 주어진 y 값에서 수평 경계를 나타내는 스칼라일 수 있습니다. y1 만 주어진 경우 y2 는 기본적으로 0입니다.

x = np.arange(0.0, 2, 0.01)
y1 = np.sin(2 * np.pi * x)
y2 = 0.8 * np.sin(4 * np.pi * x)

fig, (ax1, ax2, ax3) = plt.subplots(3, 1, sharex=True, figsize=(6, 6))

ax1.fill_between(x, y1)
ax1.set_title('fill between y1 and 0')

ax2.fill_between(x, y1, 1)
ax2.set_title('fill between y1 and 1')

ax3.fill_between(x, y1, y2)
ax3.set_title('fill between y1 and y2')
ax3.set_xlabel('x')
fig.tight_layout()
y1과 0 사이 채우기, y1과 1 사이 채우기, y1과 y2 사이 채우기

예: 신뢰 구간 #

에 대한 일반적인 응용 프로그램 fill_between은 신뢰 구간 표시입니다.

fill_between색상 순환의 색상을 채우기 색상으로 사용합니다. 채우기 영역에 적용할 때 약간 강할 수 있습니다. 따라서 alpha 를 사용하여 영역을 반투명하게 만들어 색상을 밝게 하는 것이 좋습니다 .

N = 21
x = np.linspace(0, 10, 11)
y = [3.9, 4.4, 10.8, 10.3, 11.2, 13.1, 14.1,  9.9, 13.9, 15.1, 12.5]

# fit a linear curve an estimate its y-values and their error.
a, b = np.polyfit(x, y, deg=1)
y_est = a * x + b
y_err = x.std() * np.sqrt(1/len(x) +
                          (x - x.mean())**2 / np.sum((x - x.mean())**2))

fig, ax = plt.subplots()
ax.plot(x, y_est, '-')
ax.fill_between(x, y_est - y_err, y_est + y_err, alpha=0.2)
ax.plot(x, y, 'o', color='tab:brown')
데모 사이 채우기
[<matplotlib.lines.Line2D object at 0x7f2d0108d030>]

수평 영역을 선택적으로 채우기 #

채울 x 범위를 지정할 수 있는 매개 변수 입니다. x 와 크기가 같은 부울 배열입니다 .

연속 True 시퀀스의 x 범위만 채워집니다. 결과적으로 인접한 TrueFalse 값 사이의 범위는 채워지지 않습니다. 이는 데이터 포인트가 연속적인 양을 나타내야 할 때 바람직하지 않은 경우가 많습니다. interpolate=True따라서 위의 효과가 눈에 띄지 않을 정도로 데이터 포인트의 x-거리가 미세하지 않은 경우 설정하는 것이 좋습니다 . 보간은 where 조건이 변경되고 거기까지 채우기를 확장 하는 실제 x 위치에 근접합니다 .

x = np.array([0, 1, 2, 3])
y1 = np.array([0.8, 0.8, 0.2, 0.2])
y2 = np.array([0, 0, 1, 1])

fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True)

ax1.set_title('interpolation=False')
ax1.plot(x, y1, 'o--')
ax1.plot(x, y2, 'o--')
ax1.fill_between(x, y1, y2, where=(y1 > y2), color='C0', alpha=0.3)
ax1.fill_between(x, y1, y2, where=(y1 < y2), color='C1', alpha=0.3)

ax2.set_title('interpolation=True')
ax2.plot(x, y1, 'o--')
ax2.plot(x, y2, 'o--')
ax2.fill_between(x, y1, y2, where=(y1 > y2), color='C0', alpha=0.3,
                 interpolate=True)
ax2.fill_between(x, y1, y2, where=(y1 <= y2), color='C1', alpha=0.3,
                 interpolate=True)
fig.tight_layout()
보간=거짓, 보간=참

메모

y1 또는 y2 가 마스킹된 배열 인 경우 유사한 간격이 발생 합니다. 누락된 값은 근사화할 수 없으므로 보간 은 이 경우 효과가 없습니다. 마스킹된 값 주변의 간격은 마스킹된 값에 가까운 더 많은 데이터 포인트를 추가해야만 줄일 수 있습니다.

전체 Axes에서 수평 영역을 선택적으로 표시 #

동일한 선택 메커니즘을 적용하여 축의 전체 수직 높이를 채울 수 있습니다. y-한계와 독립하기 위해 데이터 좌표의 x값과 축 좌표의 y값을 해석하는 변환을 추가합니다.

다음 예에서는 y-데이터가 지정된 임계값을 초과하는 영역을 표시합니다.

fig, ax = plt.subplots()
x = np.arange(0, 4 * np.pi, 0.01)
y = np.sin(x)
ax.plot(x, y, color='black')

threshold = 0.75
ax.axhline(threshold, color='green', lw=2, alpha=0.7)
ax.fill_between(x, 0, 1, where=y > threshold,
                color='green', alpha=0.5, transform=ax.get_xaxis_transform())
데모 사이 채우기
<matplotlib.collections.PolyCollection object at 0x7f2d00e640a0>

참조

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

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

Sphinx-Gallery에서 생성한 갤러리