Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python XlsxWriter 모듈로 Excel 시트에 세로 막대형 차트(컬럼 차트) 그리기

세로 막대형 차트(Column Chart)는 각 카테고리를 직사각형으로 표현하고, 막대의 높이가 해당 값에 비례하도록 그리는 데이터 시각화 방식입니다. 세로 막대형 차트는 수직 막대 그래프(vertical bar chart)라고도 불리며, 여러 항목 간의 수치를 한눈에 비교할 때 가장 널리 사용되는 차트 유형 중 하나입니다.

Python의 xlsxwriter 모듈을 사용하면 Excel 파일을 생성하는 동시에 워크시트 안에 다양한 형태의 차트를 손쉽게 삽입할 수 있습니다. 아래 예제에서는 두 개의 데이터 시리즈를 담은 세로 막대형 차트를 만들어 Excel 시트에 추가하는 전체 과정을 단계별로 살펴봅니다.

전체 예제 코드

# xlsxwriter 모듈 임포트
import xlsxwriter

# Workbook()은 생성할 파일 이름을 인자로 받습니다.
workbook = xlsxwriter.Workbook('chart_column.xlsx')

# add_worksheet() 메서드로 새 워크시트를 추가합니다.
worksheet = workbook.add_worksheet()

# add_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)

# 'A2', 'B2', 'C2' 셀부터 각 열의 데이터를 세로 방향으로 작성합니다.
worksheet.write_column('A2', data[0])
worksheet.write_column('B2', data[1])
worksheet.write_column('C2', data[2])

# add_chart() 메서드로 워크시트에 추가할 차트 객체를 생성합니다.
# 여기서는 'column' 타입의 세로 막대형 차트 객체를 만듭니다.
chart1 = workbook.add_chart({'type': 'column'})

# 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',
})

# 두 번째 시리즈 설정 - 대체 문법 [시트명, 첫 행, 첫 열, 마지막 행, 마지막 열] 사용
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)

# insert_chart() 메서드로 차트를 워크시트에 삽입합니다.
# 차트의 왼쪽 상단 모서리가 E2 셀에 고정됩니다.
worksheet.insert_chart('E2', chart1)

# close() 메서드로 Excel 파일을 최종 저장하고 닫습니다.
workbook.close()

코드 단계별 설명

1. 워크북과 워크시트 생성

xlsxwriter.Workbook()에 원하는 파일명을 전달하면 새 Excel 파일이 준비되고, add_worksheet() 메서드로 실제 데이터를 담을 워크시트를 추가합니다.

2. 데이터 작성

write_row()는 지정한 셀부터 가로 방향으로 데이터를 기록하며, write_column()은 세로 방향으로 기록합니다. 이 예제에서는 A열에 카테고리(Number), B열과 C열에 각각 Batch 1, Batch 2의 측정값을 입력했습니다.

3. 차트 생성 및 시리즈 추가

add_chart({'type': 'column'})으로 세로 막대형 차트 객체를 만든 뒤, add_series()로 데이터 범위를 연결합니다. 시리즈의 name, categories, values는 문자열 형식('=Sheet1!$B$1') 또는 리스트 형식(['Sheet1', 0, 2]) 두 가지 방법으로 지정할 수 있습니다.

4. 차트 꾸미기 및 삽입

set_title(), set_x_axis(), set_y_axis()로 제목과 축 레이블을 지정하고, set_style()로 미리 정의된 Excel 차트 스타일을 적용합니다. 마지막으로 insert_chart()를 호출해 차트를 특정 셀 위치(E2)에 배치한 후, close()로 파일을 저장하면 완성됩니다.

스크립트를 실행하면 chart_column.xlsx 파일이 생성되며, 파일을 열면 E2 셀 위치에 두 개의 데이터 시리즈가 비교되는 세로 막대형 차트가 삽입되어 있는 것을 확인할 수 있습니다.