본문 바로가기
프로그래밍/엑셀(Excel)

[OpenPyXL] 차트 그리기 - (6) Area Chart

by 부자 꽁냥이 2022. 10. 29.

이번 포스팅에서는 openpyxl을 이용하여 Area Chart를 정의하고 엑셀에 삽입하는 방법을 살펴본다.


   Area Chart

- 목차 -

1. 2d Area Chart

2. 3d Area Chart

3. Area Chart Style


1. 2d Area Chart

openpyxl에서는 2d Area Chart를 그리기 위한 AreaChart 클래스를 제공하고 있다. 아래 코드는 AreaChart를 이용하여 2d Area Chart를 정의하고 엑셀 시트에 삽입한다.

 

from openpyxl import Workbook
from openpyxl.chart import AreaChart, Reference

wb = Workbook()
ws = wb.active

## 데이터 생성
rows = [
    ['Number', 'Batch 1', 'Batch 2'],
    [2, 40, 30],
    [3, 40, 25],
    [4, 50, 30],
    [5, 30, 10],
    [6, 25, 5],
    [7, 50, 10],
]

## 데이터 시트에 삽입
for row in rows:
    ws.append(row)

chart = AreaChart()
chart.title = "Area Chart" ## 차트 제목
chart.style = 13 ## 차트 스타일 1~48
chart.x_axis.title = 'Test' ## x축 라벨
chart.y_axis.title = 'Percentage' ## y축 라벨

## 참조 데이터 설정
cats = Reference(ws, min_col=1, min_row=1, max_row=7) ## 범주형 참조 데이터
data = Reference(ws, min_col=2, min_row=1, max_col=3, max_row=7) ## 연속형 참조 데이터
chart.add_data(data, titles_from_data=True) ## 연속형 데이터 등록
chart.set_categories(cats) ## 범주형 데이터 설정

ws.add_chart(chart, "A10") ## A10에 차트 삽입

wb.save("area.xlsx")

 

line 22~26

AreaChart 클래스를 먼저 생성한다. 다음으로 차트 스타일, x, y축 라벨을 지정한다. 차트 스타일은 1~48번까지 설정할 수 있는데 각 숫자에 대응하는 스타일은 아래에서 확인할 수 있다.

 

line 29~34

Area Chart를 그리고자하는 참조 데이터를 Reference 클래스를 통해 정의한 뒤 add_data, set_categories를 이용하여 연속형 데이터와 범주형 데이터를 결정한다.

 

위 코드를 실행하면 아래와 같이 시트에 2d Area Chart가 잘 설정된 것을 알 수 있다.

 


2. 3d Area Chart

openpyxl 에서는 3d Area Chart를 그리기 위한 AreaChart3D 클래스를 제공한다. 아래 코드는 AreaChart3D를 이용하여 3d Area Chart를 정의하고 엑셀 시트에 삽입한다. 사용법은 앞에서 살펴본 2d Area Chart과 동일하므로 설명은 생략한다.

 

from openpyxl.chart import AreaChart3D

wb = Workbook()
ws = wb.active

## 데이터 생성
rows = [
    ['Number', 'Batch 1', 'Batch 2'],
    [2, 30, 40],
    [3, 25, 40],
    [4 ,30, 50],
    [5 ,10, 30],
    [6,  5, 25],
    [7 ,10, 50],
]

## 데이터 시트에 삽입
for row in rows:
    ws.append(row)

## 3d Area Chart 정의
chart = AreaChart3D()
chart.title = "Area Chart" ## 차트 제목
chart.style = 13 ## 차트 스타일
chart.x_axis.title = 'Test' ## x축 라벨
chart.y_axis.title = 'Percentage' ## y축 라벨
chart.legend = None ## 범주 표시 안함

## 참조 데이터 설정
cats = Reference(ws, min_col=1, min_row=1, max_row=7) ## 범주형 참조 데이터
data = Reference(ws, min_col=2, min_row=1, max_col=3, max_row=7) ## 연속형 참조 데이터
chart.add_data(data, titles_from_data=True) ## 연속형 데이터 등록
chart.set_categories(cats) ## 범주형 데이터 설정

ws.add_chart(chart, "A10")

wb.save("area3D.xlsx")

 


3. Area Chart Style

openpyxl에서는 48개의 사전에 정의된 Area Chart Style이 있다. 아래 그름을 통해 어떤 스타일이 있는지 확인해보고 맘에 드는 것을 고르면 된다.

 

openpyxl area chart style - 1~9
openpyxl area chart style - 10~18
openpyxl area chart style - 19~27
openpyxl area chart style - 28~36
openpyxl area chart style - 37~45
openpyxl area chart style - 46~48


- 참고 자료 -

Area Charts - https://openpyxl.readthedocs.io/en/stable/charts/area.html


댓글


맨 위로