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

Python XlsxWriter 모듈로 패턴 채우기가 적용된 Excel 차트 그리기

차트는 하나 이상의 데이터 포인트로 구성된 최소 하나의 시리즈(series)로 이루어집니다. 시리즈 자체는 워크시트의 셀 범위에 대한 참조로 구성됩니다. 엑셀 시트에 차트를 그리려면 다음 순서로 진행합니다.

먼저 원하는 차트 유형(세로 막대형, 꺾은선형 등)의 차트 객체를 생성하고, 차트에 데이터 시리즈를 삽입한 뒤, 마지막으로 완성된 차트 객체를 워크시트 객체에 추가하면 됩니다.

패턴 채우기(Pattern Fill)란?

XlsxWriter에서는 pattern 옵션을 사용해 차트 시리즈의 막대나 영역을 단색이 아닌 패턴으로 채울 수 있습니다. 흑백 인쇄나 스타일 구분이 필요한 보고서에서 특히 유용합니다. 대표적인 패턴 옵션은 다음과 같습니다.

  • shingle: 물결 무늬(지붕 널 패턴)
  • horizontal_brick: 가로 방향 벽돌 패턴
  • vertical_brick: 세로 방향 벽돌 패턴
  • solid, light_gray, dark_horizontal, small_grid 등 다양한 내장 패턴

예제 코드

# xlsxwriter 모듈 임포트
import xlsxwriter

# Workbook()은 생성할 파일 이름이라는 필수 인자 하나를 받습니다.
workbook = xlsxwriter.Workbook('chart_pattern.xlsx')

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

# add_format() 메서드로 셀 서식을 지정하는 Format 객체를 생성합니다.
# 여기서는 굵게(bold) 서식 객체를 생성합니다.
bold = workbook.add_format({'bold': 1})

# 차트가 참조할 워크시트 데이터를 정의합니다.
headings = ['Shingle', 'Brick']
data = [
    [105, 150, 130, 90],
    [50, 120, 100, 110],
]

# 'A1' 셀부터 시작하는 한 행의 데이터를 굵게 서식으로 작성합니다.
worksheet.write_row('A1', headings, bold)

# 각각 'A2', 'B2' 셀부터 시작하는 열 형태로 데이터를 작성합니다.
worksheet.write_column('A2', data[0])
worksheet.write_column('B2', data[1])

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

# add_series() 메서드로 패턴이 적용된 첫 번째 데이터 시리즈를 추가합니다.
# gap 값은 막대 사이 간격을 조절하여 패턴을 더 잘 보이게 하는 역할을 합니다.
# 참고: '=Sheet1!$A$1'처럼 '='과 'Sheet1', '!' 사이에 공백을 넣으면 안 됩니다.
chart.add_series({
    'name': '=Sheet1!$A$1',
    'values': '=Sheet1!$A$2:$A$5',
    'pattern': {
        'pattern': 'shingle',
        'fg_color': '#804000',
        'bg_color': '#c68c53'
    },
    'border': {'color': '#804000'},
    'gap': 70,
})

# 두 번째 시리즈를 구성합니다.
chart.add_series({
    'name': '=Sheet1!$B$1',
    'values': '=Sheet1!$B$2:$B$5',
    'pattern': {
        'pattern': 'horizontal_brick',
        'fg_color': '#b30000',
        'bg_color': '#ff6666'
    },
    'border': {'color': '#b30000'},
})

# 차트 제목을 설정합니다.
chart.set_title({'name': 'Cladding types'})

# x축 레이블을 설정합니다.
chart.set_x_axis({'name': 'Region'})

# y축 레이블을 설정합니다.
chart.set_y_axis({'name': 'Number of houses'})

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

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

주요 설정 항목 설명

1. 시리즈 이름과 값

'name'에는 시리즈 제목이 있는 셀 참조(예: =Sheet1!$A$1)를, 'values'에는 실제 데이터가 들어있는 셀 범위(예: =Sheet1!$A$2:$A$5)를 지정합니다.

2. 패턴 옵션

'pattern' 딕셔너리에서 'pattern' 키로 패턴 종류를 선택하고, 'fg_color'(전경색)와 'bg_color'(배경색)로 패턴의 색상을 지정합니다. 위 예제에서는 첫 번째 시리즈에 갈색 계열의 shingle 패턴, 두 번째 시리즈에 붉은색 계열의 horizontal_brick 패턴을 적용했습니다.

3. 테두리와 간격

'border' 옵션으로 막대의 테두리 색을 지정할 수 있으며, 'gap' 값(0~500 사이의 백분율)으로 막대 사이의 간격을 조절해 패턴을 더 선명하게 드러낼 수 있습니다.

이렇게 하면 실행 결과로 chart_pattern.xlsx 파일이 생성되며, 파일을 열면 D2 셀 위치에 패턴 채우기가 적용된 세로 막대형 차트가 삽입되어 있는 것을 확인할 수 있습니다.