Matplotlib로 그린 막대 차트에서 모든 막대(bar) 객체에 접근하려면 bar() 메서드의 반환값을 변수에 저장하면 됩니다. 이 반환값은 각 막대에 해당하는 Rectangle 객체들의 컨테이너이며, 이를 활용하면 개별 막대의 색상이나 스타일을 자유롭게 수정할 수 있습니다.
구현 단계
- 그림(figure) 크기를 설정하고 서브플롯 주변과 사이의 여백을 조정합니다.
- subplots() 메서드를 사용해 figure와 axes 객체를 생성합니다.
- NumPy를 이용해 x, y 데이터 포인트를 만듭니다.
- bar() 메서드로 막대 그래프를 그리고, 결과를 bars 변수에 저장합니다.
- 인덱싱을 통해 특정 막대에 접근한 뒤 set_color() 메서드로 색상을 변경합니다.
- show() 메서드를 호출해 그림을 화면에 표시합니다.
예제 코드
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
fig, ax = plt.subplots()
x = np.arange(7)
y = np.random.rand(7)
bars = ax.bar(x, y, color='red')
bars[0].set_color('yellow')
bars[4].set_color('blue')
plt.show()
코드 설명
위 예제에서는 7개의 막대를 빨간색으로 먼저 그린 후, bars[0](첫 번째 막대)은 노란색으로, bars[4](다섯 번째 막대)는 파란색으로 개별적으로 색상을 변경합니다. 이처럼 bar() 메서드가 반환하는 BarContainer 객체는 리스트처럼 인덱스로 접근할 수 있어, 특정 막대만 강조하거나 조건에 따라 색상을 다르게 지정하는 등의 세밀한 커스터마이징이 가능합니다.
실행 결과

실행하면 대부분의 막대가 빨간색으로 표시되고, 첫 번째 막대는 노란색, 다섯 번째 막대는 파란색으로 강조된 막대 차트가 출력됩니다. 참고로 y 값은 np.random.rand()로 무작위 생성되므로 실행할 때마다 막대 높이는 달라질 수 있습니다.