메모
전체 예제 코드를 다운로드 하려면 여기 를 클릭 하십시오.
줄 사이 영역 채우기 #
이 예제는 를 사용 fill_between
하여 두 선 사이의 영역을 색칠하는 방법을 보여줍니다.
import matplotlib.pyplot as plt
import numpy as np
기본 사용법 #
매개변수 y1 및 y2 는 주어진 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()
예: 신뢰 구간 #
에 대한 일반적인 응용 프로그램 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 범위만 채워집니다. 결과적으로 인접한 True 및 False 값 사이의 범위는 채워지지 않습니다. 이는 데이터 포인트가 연속적인 양을 나타내야 할 때 바람직하지 않은 경우가 많습니다. 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초)