데이터 시각화에서 누적 가로 막대 차트는 여러 항목의 값을 하나의 막대에 쌓아 올려 전체와 각 구성 요소의 비중을 한눈에 비교할 수 있게 해주는 유용한 차트입니다. Pandas에서는 plot.barh() 메서드를 사용하면 손쉽게 가로 막대 차트를 그릴 수 있으며, stacked 매개변수를 True로 설정하기만 하면 누적 형태로 표현할 수 있습니다.
핵심 포인트: stacked 매개변수
stacked = True
1단계: 필요한 라이브러리 가져오기
먼저 데이터 처리를 위한 Pandas와 시각화를 위한 Matplotlib을 임포트합니다.
import pandas as pd import matplotlib.pyplot as plt
2단계: DataFrame 생성하기
이번 예제에서는 자동차 모델별 배기량과 등록 가격 정보를 담은 3개 열(Car, Cubic_Capacity, Reg_Price)로 구성된 DataFrame을 만듭니다.
dataFrame = pd.DataFrame({
"Car": ['Bentley', 'Lexus', 'BMW', 'Mustang', 'Mercedes', 'Jaguar'],
"Cubic_Capacity": [2000, 1800, 1500, 2500, 2200, 3000],
"Reg_Price": [7000, 1500, 5000, 8000, 9000, 6000],
})3단계: 누적 가로 막대 차트 그리기
plot.barh()에 stacked=True를 지정하여 모든 열의 값을 누적한 가로 막대 차트를 생성합니다. title로 차트 제목을 설정하고, color 매개변수로 각 데이터 계열의 색상을 지정할 수 있습니다.
dataFrame.plot.barh(stacked=True, title='Car Specifications', color=("orange", "cyan"))전체 예제 코드
지금까지의 내용을 종합한 완전한 코드는 다음과 같습니다.
import pandas as pd
import matplotlib.pyplot as plt
# DataFrame 생성
dataFrame = pd.DataFrame({
"Car": ['Bentley', 'Lexus', 'BMW', 'Mustang', 'Mercedes', 'Jaguar'],
"Cubic_Capacity": [2000, 1800, 1500, 2500, 2200, 3000],
"Reg_Price": [7000, 1500, 5000, 8000, 9000, 6000],
})
# 모든 열을 누적한 가로 막대 차트 그리기
dataFrame.plot.barh(stacked=True, title='Car Specifications', color=("orange", "cyan"))
# 차트 화면에 표시
plt.show()실행 결과
위 코드를 실행하면 자동차 모델별로 배기량과 등록 가격이 누적된 가로 막대 차트가 출력됩니다. 각 막대의 길이는 두 값의 합을 나타내며, 주황색과 청록색 영역으로 각 항목의 기여도를 구분해 확인할 수 있습니다.

참고 사항
barh()는 세로 막대 차트(bar())와 달리 범주 레이블이 길 때 특히 유용합니다.color매개변수에는 색상 이름, HEX 코드, RGB 튜플 등을 리스트나 튜플 형태로 전달할 수 있습니다.- 누적 차트에서 각 막대의 순서는 DataFrame의 열 순서를 따르므로, 필요하다면 열 순서를 조정해 가독성을 높일 수 있습니다.