Matplotlib에서 임계값(threshold) 선이 포함된 막대 차트를 만들려면 axhline() 메서드를 활용하면 됩니다. 이 메서드는 축 전체에 가로 방향의 기준선을 그려주어, 데이터가 특정 기준을 넘었는지 시각적으로 쉽게 판단할 수 있게 해줍니다.
구현 단계
- 그림(figure) 크기를 설정하고 서브플롯 주변 및 사이의 여백을 조정합니다.
- 임계값을 저장할 변수 threshold를 초기화합니다.
- 막대에 표시할 값들을 리스트 또는 배열로 준비합니다.
- 임계값을 기준으로 기준 이하 값과 초과 값을 각각 계산합니다.
- subplots() 메서드를 사용해 figure와 subplot을 생성합니다.
- x축 값, 임계값 이하 값(b_threshold), 임계값 초과 값(a_threshold)을 사용해 막대를 그립니다.
- axhline() 메서드로 축을 가로지르는 임계값 선을 추가합니다.
- show() 메서드를 호출해 그림을 화면에 표시합니다.
예제 코드
import numpy as np import matplotlib.pyplot as plt plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True threshold = 10 values = np.array([8.0, 10.0, 15.0, 9.0, 12.0]) x = range(len(values)) a_threshold = np.maximum(values - threshold, 0) b_threshold = np.minimum(values, threshold) fig, ax = plt.subplots() ax.bar(x, b_threshold, 0.35, color="blue") ax.bar(x, a_threshold, 0.35, color="yellow", bottom=b_threshold) plt.axhline(threshold, color='red', ls='dotted') plt.show()
코드 설명
위 예제에서는 임계값을 10으로 설정하고, 다섯 개의 데이터 값(8.0, 10.0, 15.0, 9.0, 12.0)을 준비했습니다. np.maximum(values - threshold, 0)은 각 값에서 임계값을 뺀 나머지(초과분)를 계산하며, 음수가 되지 않도록 처리합니다. 반대로 np.minimum(values, threshold)은 임계값 이하 부분만 추출합니다.
파란색 막대는 임계값 이하 구간을, 노란색 막대는 임계값을 초과한 구간을 나타냅니다. 마지막으로 빨간색 점선(ls='dotted')으로 임계값 선을 그어 어느 막대가 기준을 넘었는지 한눈에 확인할 수 있습니다.
실행 결과
