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

Python XlsxWriter 모듈로 엑셀 시트에 꺾은선형 차트 그리기

꺾은선형 차트(Line Chart)는 자산의 과거 가격 흐름을 그래프로 표현한 것으로, 일련의 데이터 포인트를 하나의 연속적인 선으로 연결해 보여줍니다. 금융 분야에서 가장 기본적으로 사용되는 차트 유형이며, 일반적으로 특정 증권의 종가가 시간의 흐름에 따라 어떻게 변화했는지를 나타내는 데 활용됩니다.

Python에서는 XlsxWriter 모듈을 사용하면 별도의 엑셀 프로그램 없이도 코드만으로 엑셀 파일을 생성하고, 그 안에 다양한 형태의 차트를 손쉽게 삽입할 수 있습니다. 아직 모듈이 설치되어 있지 않다면 다음 명령어로 먼저 설치하세요.

pip install XlsxWriter

예제: 꺾은선형 차트 만들기

아래 예제는 두 개의 실험 데이터(Batch 1, Batch 2)를 꺾은선형 차트로 시각화하고, 이를 워크시트에 삽입하는 전체 과정을 보여줍니다.

# xlsxwriter 모듈 임포트
import xlsxwriter

# Workbook()은 생성할 파일 이름이라는 필수 인자 하나를 받습니다.
workbook = xlsxwriter.Workbook('chart_Line.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)

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

# add_chart() 메서드로 워크시트에 추가할 차트 객체를 생성합니다.
# 여기서는 꺾은선형(line) 차트 객체를 만듭니다.
chart1 = workbook.add_chart({'type': 'line'})

# add_series() 메서드로 차트에 데이터 계열을 추가합니다.
# 첫 번째 계열 구성: A1 문자열 방식 사용 ('=Sheet1!$A$1'은 ['Sheet1', 0, 0]과 동일)
# 참고: '='과 'Sheet1' 사이, 'Sheet1'과 '!' 사이에는 공백이 없어야 하며,
# 공백이 들어가면 경고가 발생합니다.
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)'})

# 엑셀 차트 스타일을 지정합니다.
chart1.set_style(11)

# 지정한 오프셋 값과 함께 차트를 워크시트에 삽입합니다.
# 차트의 왼쪽 상단 모서리는 D2 셀에 고정됩니다.
worksheet.insert_chart('D2', chart1, {'x_offset': 25, 'y_offset': 10})

# 마지막으로 close() 메서드를 호출해 엑셀 파일을 저장하고 닫습니다.
workbook.close()

코드 핵심 단계 정리

1. 워크북과 워크시트 생성
xlsxwriter.Workbook()으로 엑셀 파일 객체를 만들고, add_worksheet()로 데이터를 입력할 시트를 추가합니다.

2. 데이터 작성
write_row()는 가로 방향으로, write_column()은 세로 방향으로 데이터를 기록합니다. 머리글에는 add_format()으로 만든 굵은 글씨 서식을 적용했습니다.

3. 차트 생성 및 계열 추가
add_chart({'type': 'line'})으로 꺾은선형 차트를 만든 뒤, add_series()로 계열을 추가합니다. 범위 지정은 '=Sheet1!$B$2:$B$7' 같은 A1 문자열 방식과 ['Sheet1', 1, 2, 6, 2] 같은 리스트 방식 두 가지를 사용할 수 있습니다.

4. 차트 꾸미기
set_title(), set_x_axis(), set_y_axis()로 제목과 축 레이블을 지정하고, set_style()로 엑셀이 제공하는 기본 스타일을 적용할 수 있습니다.

5. 차트 삽입 및 저장
insert_chart()로 원하는 셀 위치에 차트를 배치하며, x_offsety_offset으로 세부 위치를 조정할 수 있습니다. 마지막에는 반드시 close()를 호출해야 파일이 정상적으로 저장됩니다.

스크립트를 실행하면 chart_Line.xlsx 파일이 생성되고, 파일을 열면 D2 셀 근처에 완성된 꺾은선형 차트를 확인할 수 있습니다.