Python/Matplotlib

[Python] 파이썬 matplotlib 그래프 영역 색칠하기 - fill_between, fill_betweenx

나비🦋 2024. 5. 13. 22:29
반응형

안녕하세요! 나비입니다 🦋

이번 포스팅에서는 파이썬 matplotlib를 통해 좌표평면 상에 그래프 영역을 색칠하는 방법에 대해 다뤄보려고 합니다.

두 그래프가 주어졌을 때, 수평방향으로 색칠하는 메소드와 수직방향으로 색칠하는 메소드를 각각 소개드리고, 색칠하는 영역의 투명도를 설정하는 파라미터도 설명해 보겠습니다.


plt.fill_between

import matplotlib.pyplot as plt

x = [1,2,3,4]
y = [2,3,4,5]

plt.plot(x, y)
plt.fill_between(x[1:3], y[1:3], alpha=0.5)

plt.show()


Fill_between 함수에 일정 범위로 인덱싱한 x축, y축 배열을 순서대로 입력하고, alpha 파라미터에 0 이상 1 이하 값을 넣어주면 됩니다.

Alpha 파라미터는 1에 가까울수록 색이 진하고, 0에 가까울수록 색이 옅어집니다. 위 코드에서는 alpha 값을 0.5로 설정하였는데, 아래에서 alpha가 1인 경우와 함께 비교해보시면 더 잘 이해될 것입니다.


import matplotlib.pyplot as plt

x = [1,2,3,4]
y = [2,3,4,5]

plt.plot(x,y)
plt.fill_between(x[1:3], y[1:3], alpha=1)

plt.show()


위 코드와 모든 조건이 똑같고, alpha 값만 1로 키워보았더니 색깔이 더 진해진 것을 확인할 수 있었습니다.




plt.fill_betweenx

import matplotlib.pyplot as plt

x = [1,2,3,4]
y = [4,3,2,1]

plt.plot(x,y)
plt.fill_betweenx(x[1:3], y[1:3], alpha = 0.5)

plt.show()


방향을 바꿔서 수직으로 영역을 색칠하고 싶은 경우, fill_betweenx 메소드를 사용하면 됩니다. fill_between 함수와 사용 방법은 동일합니다.

색칠할 영역에 맞게 인덱싱한 배열 2개와 함께 alpha 파라미터를 넣어주면 됩니다.


바로 위 이미지는 alpha를 1로 바꿔준 결과입니다. fill_between과 마찬가지로, 1(100%)로 갈수록 진해지고 0(0%)로 갈수록 옅어집니다.

반응형