Matplotlib에서 plot fill 관련 함수는 그래프의 특정 영역을 색상으로 채우는 기능을 제공합니다. 이는 데이터의 범위를 강조하거나, 특정 조건을 시각적으로 표현할 때 유용합니다.
주요 함수는 fill_between()
, fill_betweenx()
, fill()
등이 있습니다.
1. fill_between()
fill_between()
은 두 개의 곡선 또는 선 사이의 영역을 채웁니다. 주로 x
값에 따라 y
값의 범위를 채울 때 사용됩니다.
plt.fill_between(x, y1, y2=0, where=None, interpolate=False, alpha=0.5, color='blue')
x
: x축 데이터.y1
: 첫 번째 y축 데이터.y2
: 두 번째 y축 데이터 (기본값은 0).where
: 조건을 지정하여 특정 영역만 채움.interpolate
: True일 경우, 조건이 충족되지 않는 부분을 보간.alpha
: 투명도 (0~1).color
: 채우기 색상.
2. 조건부 채우기 (where
파라미터)
where
파라미터를 사용하여 특정 조건을 만족하는 영역만 채울 수 있습니다.
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.plot(x, y, label='sin(x)')
plt.fill_between(x, y, where=(y > 0), color='green', alpha=0.3, label='y > 0')
plt.fill_between(x, y, where=(y < 0), color='red', alpha=0.3, label='y < 0')
plt.title('Conditional Fill Between')
plt.legend()
plt.show()
3. 두 곡선 사이 채우기
두 개의 곡선 사이의 영역을 채울 수도 있습니다.
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x, y1, label='sin(x)')
plt.plot(x, y2, label='cos(x)')
plt.fill_between(x, y1, y2, color='purple', alpha=0.3)
plt.title('Fill Between Two Curves')
plt.legend()
plt.show()
4. fill_betweenx()
fill_betweenx()
는 fill_between()
과 유사하지만, y
값에 따라 x
값의 범위를 채웁니다.
plt.fill_betweenx(y, x1, x2=0, where=None, interpolate=False, alpha=0.5, color='blue')
5. fill()
fill()
은 다각형 영역을 채우는 데 사용됩니다. x
와 y
좌표를 지정하여 다각형을 정의합니다.
plt.fill(x, y, color='blue', alpha=0.5)
6. 여러 영역 채우기
여러 영역을 다른 색상으로 채울 수도 있습니다.
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x, y1, label='sin(x)')
plt.plot(x, y2, label='cos(x)')
plt.fill_between(x, y1, y2, where=(y1 > y2), color='green', alpha=0.3, label='sin(x) > cos(x)')
plt.fill_between(x, y1, y2, where=(y1 < y2), color='red', alpha=0.3, label='sin(x) < cos(x)')
plt.title('Multiple Filled Areas')
plt.legend()
plt
Plot fill Code
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2 * np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.fill_between(x, y1, y2, color='orange', alpha=0.5)
plt.plot(x, y1, color='blue', label='sin(x)')
plt.plot(x, y2, color='green', label='cos(x)')
plt.title('Fill Between Example')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
plt.legend()
plt.show()

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2 * np.pi, 100)
y1 = np.sin(x)
plt.fill_between(x, y1, color='purple', alpha=0.5, where=(y1 > 0), label='y1 > 0')
plt.fill_between(x, y1, color='red', alpha=0.5, where=(y1 <= 0), label='y1 <= 0')
plt.plot(x, y1, color='black')
plt.title('Fill Between Axis Example')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
plt.legend()
plt.show()

필요성
1. 시각적 강조
- 특정 영역 강조: 데이터의 특정 범위나 조건을 시각적으로 강조할 수 있습니다. 예를 들어, 두 곡선 사이의 영역을 채워 차이를 명확히 보여줄 수 있습니다.
- 가독성 향상: 채워진 영역은 그래프의 중요한 부분을 눈에 띄게 만들어, 데이터 해석을 쉽게 합니다.
2. 다양한 활용 가능
- 조건부 채우기:
where
파라미터를 사용하여 특정 조건을 만족하는 영역만 채울 수 있습니다. - 다양한 스타일링: 색상, 투명도(
alpha
), 그라데이션 등을 적용하여 시각적으로 풍부한 그래프를 만들 수 있습니다.
3. 데이터 범위 표현
- 범위 시각화: 데이터의 최소/최대 범위, 신뢰 구간, 오차 막대 등을 채워진 영역으로 표현할 수 있습니다.
- 비교 용이: 두 데이터 세트의 차이를 채워진 영역으로 표현하여 비교를 직관적으로 할 수 있습니다.
4. 유연성
- 다각형 채우기:
fill()
을 사용하여 임의의 다각형 영역을 채울 수 있습니다. - 수직/수평 채우기:
fill_between()
과fill_betweenx()
를 사용하여 수직 또는 수평 영역을 채울 수 있습니다.
주의해야 할 사항
1. 성능 문제
- 대용량 데이터에서 느림: 데이터 포인트가 많을 경우 채우기 작업이 느려질 수 있습니다.
- 복잡한 그래프에서 렌더링 지연: 여러 채우기 영역이 있는 복잡한 그래프는 렌더링 속도가 느려질 수 있습니다.
2. 가독성 저하
- 과도한 사용 시 혼란: 너무 많은 채우기 영역을 사용하면 그래프가 복잡해져 오히려 가독성이 떨어질 수 있습니다.
- 투명도 설정 필요: 투명도(
alpha
)를 설정하지 않으면 채워진 영역이 다른 요소를 가릴 수 있습니다.
3. 설정의 복잡성
- 조건부 채우기의 복잡성:
where
파라미터를 사용할 때 조건이 복잡하면 코드가 길어지고 관리가 어려울 수 있습니다. - 스타일링의 어려움: 색상, 투명도, 경계선 등을 세밀하게 조절하려면 추가적인 코드가 필요합니다.
4. 한계점
- 곡선 간 교차 문제: 두 곡선이 교차하는 경우,
fill_between()
을 사용할 때 추가적인 처리가 필요할 수 있습니다. - 다각형 채우기의 제약:
fill()
을 사용할 때 다각형의 꼭짓점을 정확히 지정해야 하므로, 복잡한 도형은 구현이 어려울 수 있습니다.