도넛형 차트(Donut Chart)는 파이 차트(Pie Chart)의 한 변형으로, 중앙에 둥근 구멍이 있어 도넛처럼 보인다고 해서 이런 이름이 붙었습니다. 이 가운데 빈 공간은 추가 데이터를 표시하는 용도로 활용할 수 있어, 시각적으로 깔끔하면서도 정보 전달력이 뛰어난 차트 유형입니다.
XlsxWriter로 도넛 차트 만들기
Python의 xlsxwriter 모듈을 사용하면 별도의 엑셀 프로그램 없이도 코드만으로 엑셀 파일에 다양한 차트를 삽입할 수 있습니다. 아래 예제에서는 도넛형 차트를 생성하고 워크시트에 배치하는 과정을 단계별로 살펴보겠습니다.
전체 예제 코드
# xlsxwriter 모듈 임포트
import xlsxwriter
# Workbook()은 생성할 파일 이름을 필수 인자로 받습니다.
workbook = xlsxwriter.Workbook('chart_doughnut1.xlsx')
# add_worksheet() 메서드로 새 워크시트를 추가합니다.
worksheet = workbook.add_worksheet()
# add_format() 메서드로 셀 서식 객체를 생성합니다.
# 여기서는 굵은 글씨(bold) 서식 객체를 만듭니다.
bold = workbook.add_format({'bold': 1})
# 차트가 참조할 워크시트 데이터를 준비합니다.
headings = ['Category', 'Values']
data = [
['Glazed', 'Chocolate', 'Cream'],
[50, 35, 15],
]
# 'A1' 셀부터 시작하는 행 데이터를 굵은 글씨 서식으로 작성합니다.
worksheet.write_row('A1', headings, bold)
# 각각 'A2', 'B2' 셀부터 시작하는 열 데이터를 작성합니다.
worksheet.write_column('A2', data[0])
worksheet.write_column('B2', data[1])
# add_chart() 메서드로 워크시트에 추가할 차트 객체를 생성합니다.
# 여기서는 도넛(doughnut) 타입의 차트 객체를 만듭니다.
chart1 = workbook.add_chart({'type': 'doughnut'})
# add_series 메서드로 차트에 데이터 계열을 추가합니다.
# 범위 지정 문법: [시트명, 시작_행, 시작_열, 끝_행, 끝_열]
chart1.add_series({
'name': 'Doughnut sales data',
'categories': ['Sheet1', 1, 0, 3, 0],
'values': ['Sheet1', 1, 1, 3, 1],
})
# 차트 제목을 설정합니다.
chart1.set_title({'name': 'Popular Doughnut Types'})
# 엑셀 차트 스타일을 지정합니다. 흰색 테두리와 그림자 효과가 적용된 색상입니다.
chart1.set_style(10)
# 오프셋을 적용해 차트를 워크시트에 삽입합니다.
# 차트의 왼쪽 상단 모서리가 C2 셀에 고정됩니다.
worksheet.insert_chart('C2', chart1, {'x_offset': 25, 'y_offset': 10})
# 마지막으로 close() 메서드를 호출해 엑셀 파일을 닫습니다.
workbook.close()
코드 단계별 설명
1. 워크북 및 워크시트 생성
xlsxwriter.Workbook()에 원하는 파일명을 전달하여 워크북 객체를 만들고, add_worksheet()로 데이터를 입력할 워크시트를 추가합니다.
2. 데이터 작성
write_row()는 지정한 셀부터 가로 방향으로 데이터를 기록하고, write_column()은 세로 방향으로 기록합니다. 여기서는 카테고리(Glazed, Chocolate, Cream)와 해당 값(50, 35, 15)을 입력했습니다.
3. 차트 객체 생성 및 데이터 계열 추가
add_chart({'type': 'doughnut'})로 도넛형 차트를 만든 뒤, add_series()에서 categories(항목 이름)와 values(수치)의 참조 범위를 지정합니다.
4. 제목·스타일 설정 후 삽입
set_title()로 차트 제목을 정하고, set_style(10)으로 미리 정의된 엑셀 차트 스타일을 적용합니다. 마지막으로 insert_chart()를 호출할 때 x_offset과 y_offset 값을 주어 C2 셀 기준으로 차트 위치를 세밀하게 조정할 수 있습니다.
스크립트를 실행하면 현재 디렉터리에 chart_doughnut1.xlsx 파일이 생성되며, 파일을 열면 C2 셀 근처에 도넛형 차트가 삽입된 것을 확인할 수 있습니다.