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

파이썬 XlsxWriter 모듈로 엑셀 시트에 막대 차트 그리기

막대 차트(bar chart) 또는 막대 그래프는 범주형 데이터를 직사각형 막대의 높이나 길이로 표현하는 차트입니다. 각 막대의 높이와 길이는 해당 값에 비례하며, 막대는 세로 또는 가로 방향으로 배치할 수 있습니다. 특히 세로로 그린 막대 차트는 '세로 막대형 차트(column chart)'라고도 부릅니다.

파이썬에서는 XlsxWriter 모듈을 사용하면 Excel 파일(.xlsx)을 생성하고 워크시트에 다양한 종류의 차트를 손쉽게 삽입할 수 있습니다. 아래 예제에서는 두 개의 데이터 시리즈를 가진 막대 차트를 만들어 워크시트에 추가하는 전체 과정을 살펴봅니다.

예제 코드

# xlsxwriter 모듈 임포트
import xlsxwriter

# Workbook()은 생성할 파일 이름을 필수 인자로 받습니다.
workbook = xlsxwriter.Workbook('chart_bar.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() 메서드로 워크시트에 추가할 차트 객체를 생성합니다.
# 여기서는 막대 차트(bar) 객체를 만듭니다.
chart1 = workbook.add_chart({'type': 'bar'})

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

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

# 마지막으로 close() 메서드로 Excel 파일을 닫습니다.
workbook.close()

코드 단계별 설명

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

xlsxwriter.Workbook()에 파일 이름을 전달하여 새 통합 문서를 만들고, add_worksheet() 메서드로 데이터를 입력할 워크시트를 추가합니다.

2. 데이터 작성

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

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

add_chart({'type': 'bar'})로 막대 차트 객체를 생성한 뒤, add_series() 메서드로 차트에 표시할 데이터 범위를 지정합니다. 시리즈 이름, 범주(categories), 값(values)은 'Sheet1!$B$1'과 같은 A1 참조 표기법 문자열로 지정하거나, [시트명, 첫 행, 첫 열, 마지막 행, 마지막 열] 형태의 리스트로 지정할 수도 있습니다.

4. 차트 꾸미기 및 삽입

set_title(), set_x_axis(), set_y_axis() 메서드로 차트 제목과 축 레이블을 지정하고, set_style()로 Excel에서 미리 정의된 차트 스타일을 적용합니다. 마지막으로 insert_chart()를 호출해 차트를 원하는 셀 위치(여기서는 E2)에 삽입한 후, close() 메서드로 파일을 저장하고 종료합니다.

위 코드를 실행하면 chart_bar.xlsx 파일이 생성되며, 파일을 열면 E2 셀 위치에 두 개의 데이터 시리즈가 담긴 막대 차트가 함께 표시되는 것을 확인할 수 있습니다.