영역 차트(Area Chart)는 하나 이상의 수량이 시간의 흐름에 따라 어떻게 변화하는지 보여주는 그래프입니다. 시간 축 위에 일련의 데이터 포인트를 표시하고, 이들을 선분으로 연결한 뒤 선과 x축 사이의 영역을 색상이나 음영으로 채우는 방식으로 만들어집니다.
Python의 XlsxWriter 모듈을 사용하면 Excel 워크시트에 영역 차트를 손쉽게 삽입할 수 있습니다. 아래 예제에서는 워크북 생성부터 차트 삽입, 파일 저장까지 전 과정을 단계별로 살펴봅니다.
예제 코드
# xlsxwriter 모듈 임포트
import xlsxwriter
# Workbook()은 생성할 파일명을 필수 인자로 받습니다.
workbook = xlsxwriter.Workbook('chart_area.xlsx')
# add_worksheet() 메서드로 새 워크시트를 추가합니다.
worksheet = workbook.add_worksheet()
# add_format() 메서드로 셀 서식(Format) 객체를 생성합니다.
# 여기서는 굵은 글씨(bold) 서식 객체를 만듭니다.
bold = workbook.add_format({'bold': 1})
# 데이터 리스트 생성
headings = ['Number', 'Batch 1', 'Batch 2']
data = [
[2, 3, 4, 5, 6, 7],
[80, 80, 100, 60, 50, 100],
[60, 50, 60, 20, 10, 20],
]
# 'A1' 셀부터 굵은 글씨 서식으로 헤더 행을 작성합니다.
worksheet.write_row('A1', headings, bold)
# 각 열(column)의 데이터를 작성합니다.
worksheet.write_column('A2', data[0])
worksheet.write_column('B2', data[1])
worksheet.write_column('C2', data[2])
# add_chart() 메서드로 워크시트에 추가할 차트 객체를 생성합니다.
# 여기서는 영역(area) 차트 객체를 만듭니다.
chart1 = workbook.add_chart({'type': 'area'})
# add_series() 메서드로 차트에 데이터 시리즈를 추가합니다.
# 첫 번째 시리즈 설정. '=Sheet1!$A$1'은 ['Sheet1', 0, 0]과 동일합니다.
chart1.add_series({
'name': '=Sheet1!$B$1',
'categories': '=Sheet1!$A$2:$A$7',
'values': '=Sheet1!$B$2:$B$7',
})
# 두 번째 시리즈 설정. 범위 정의에 대체 문법을 사용합니다.
# [sheetname, first_row, first_col, last_row, last_col]
chart1.add_series({
'name': ['Sheet1', 0, 2],
'categories': ['Sheet1', 1, 0, 6, 0],
'values': ['Sheet1', 1, 2, 6, 2],
})
# 차트 제목 추가
chart1.set_title({'name': 'Results of data analysis'})
# x축 레이블 추가
chart1.set_x_axis({'name': 'Test number'})
# y축 레이블 추가
chart1.set_y_axis({'name': 'Data length (mm)'})
# Excel 차트 스타일 설정
chart1.set_style(11)
# 워크시트에 차트를 삽입합니다. 차트의 좌상단 모서리는 E2 셀에 고정됩니다.
worksheet.insert_chart('E2', chart1)
# 마지막으로 close() 메서드로 Excel 파일을 닫습니다.
workbook.close()코드 단계별 설명
1. 워크북과 워크시트 생성
xlsxwriter.Workbook()에 원하는 파일 이름을 전달하면 새 워크북 객체가 생성됩니다. 이어서 add_worksheet() 메서드를 호출해 데이터를 기록할 워크시트를 추가합니다.
2. 데이터 작성하기
add_format()으로 굵은 글씨 서식 객체를 만든 후, write_row()를 사용해 A1 셀부터 헤더 행을 작성하고, write_column()으로 각 열에 해당하는 데이터를 세로 방향으로 입력합니다.
3. 차트 객체와 데이터 시리즈 구성
add_chart({'type': 'area'})로 영역 차트 객체를 생성한 뒤 add_series() 메서드를 호출해 데이터 시리즈를 추가합니다. 범위는 A1 스타일 문자열('=Sheet1!$B$2:$B$7') 또는 행·열 인덱스를 사용하는 리스트 형태(['Sheet1', 1, 1, 6, 1]) 중 편한 방식으로 지정할 수 있습니다.
4. 차트 꾸미기 및 삽입
set_title(), set_x_axis(), set_y_axis() 메서드로 차트 제목과 축 레이블을 지정하고, set_style()로 미리 정의된 Excel 차트 스타일을 적용합니다. 마지막으로 insert_chart()를 호출하면 차트의 좌상단 모서리가 E2 셀에 고정된 상태로 워크시트에 배치됩니다.
실행 결과
스크립트를 실행하면 현재 디렉터리에 chart_area.xlsx 파일이 생성되고, 파일을 열면 두 개의 데이터 시리즈(Batch 1, Batch 2)가 채워진 영역 차트로 시각화되어 있는 것을 확인할 수 있습니다. 이처럼 XlsxWriter를 활용하면 별도의 Excel 프로그램 없이도 코드만으로 전문적인 차트를 자동 생성할 수 있습니다.