본문 바로가기

코딩/업무자동화

[파이썬/업무자동화] openpyxl chart 사용법

반응형

※ OpenPyxl 관련 포스팅 모음

2021.03.19 - [코딩/업무자동화] - [파이썬/업무자동화] Openpyxl로 엑셀 함수 사용하기, 엑셀 수식 넣기

2021.08.21 - [코딩/업무자동화] - [파이썬/업무자동화] Openpyxl 통해 엑셀 함수 사용하기 2편

2021.08.30 - [코딩/업무자동화] - [파이썬/업무자동화] 엑셀에 입력 된 파일명 따라 이미지 삽입하기 - openpyxl

2021.10.04 - [코딩/업무자동화] - [파이썬/업무자동화] openpyxl.style 사용법 정리

2021.10.16 - [코딩/업무자동화] - [파이썬/업무자동화] openypyxl 통해 엑셀 조건부 서식 적용하기

2021.11.09 - [코딩/업무자동화] - [파이썬/업무자동화] openpyxl 시트 조작 방법 4가지


openpyxl Chart 사용법에 대한 정리해보았다.

Bar chart 사용법 기준으로 정리하였으며, Openpyxl 공식 Tutorial을 참고하였음.

(https://openpyxl.readthedocs.io/en/stable/charts/bar.html)

 

1. data 추가

 

<코드>

import openpyxl as op #Openpyxl import

wb = op.Workbook() #Workbook 객체 생성
ws = wb.active #현재 활성화되어있는 시트 선택

#성적표 data를 리스트로 저장
data = [('이름', "국어", "영어", "수학"),
        ('YB', 100, 100, 100),
        ('SW', 90, 80, 100),
        ('EJ', 90, 90, 90)
        ]

#위 데이터를 행별로 추가
for row in data:
    ws.append(row)
    
#저장
wb.save("성적표.xlsx")
wb.close()

 

<결과>

 

2. Openpyxl chart 사용법

 

  위 "성적표.xlsx"파일을 활용해서 2D 막대차트를 그리는 방법을 요약.

 

<코드>

import openpyxl as op #Openpyxl import
from openpyxl.chart import BarChart, Series, Reference #Openpyxl chart import

path = r"C:\Users\Yongbeom Jeong\Desktop\VS CODE"

wb= op.load_workbook(path+"/"+"성적표.xlsx")
ws = wb.active

#BarChart 생성
chart1 = BarChart() #차트 객체 생성
chart1.type = "col" #col : 세로막대 or bar : 가로막대
chart1.style = 11 #차트 색상 스타일
chart1.title = "국영수 성적표" #차트 제목
chart1.y_axis.title = '점수' #y축 이름
chart1.x_axis.title = '학생이름' #x축 이름

#data 영역 설정(점수)
data = Reference(ws, min_col=2, min_row=1, max_row=4, max_col=4)
#cat 영역 설정(학생이름)
cats = Reference(ws, min_col=1, min_row=2, max_row=4)
chart1.add_data(data, titles_from_data=True) #차트 영역에 데이터 추가, titles_from_data는 범례사용 여부
chart1.set_categories(cats) #차트 영역에 카테고리 설정(학생이름)
chart1.shape = 20
ws.add_chart(chart1, "A10")

wb.save("성적표차트.xlsx")

<결과>

 

 

1)  막대차트에 대한 객체를 생성 함.(chart1)

 

chart1 = BarChart() #차트 객체 생성

 

2) 차트 형태를 설정 함.(chart1.type)

 

chart1.type = "col" #col : 세로막대 or bar : 가로막대

  - 세로 막대 형태의 차트로 설정 함. 값은 "col" or "bar"

  - "bar"로 설정할 경우 아래 모양과 같이 출력 됨.

 

3) 차트의 데이터 영역을 설정 함.

 

#data 영역 설정(점수)
data = Reference(ws, min_col=2, min_row=1, max_row=4, max_col=4)

  - 실제 차트의 data(위 그래프에서는 점수)가 될 영역을 설정 함.

  - ws는 데이터가 있는 Worksheet 변수

  - 위 성적표의 경우 아래 영역과 같음.

  - min_col = 2, max_col = 4(2열부터 4열)

    min_row = 1, max_row = 4(1행부터 4행)

 

4) 차트의 category를 설정 함.

 

#cat 영역 설정(학생이름)
cats = Reference(ws, min_col=1, min_row=2, max_row=4)

  - 실제 차트의 카테고리(위 그래프에서 학생이름)이 될 영역 설정

  -  ws는 데이터가 있는 Worksheet 변수

  - min_col = 1 (1열만)

  - min_row = 2, max_row=4 (2행부터 4행)

 

5) 위에서 설정한 data와 cats을 chart1 객체에 입력 함.

 

chart1.add_data(data, titles_from_data=True) #차트 영역에 데이터 추가, titles_from_data는 범례사용 여부
chart1.set_categories(cats) #차트 영역에 카테고리 설정(학생이름)

 

-. add_data는 말그대로 data 를 추가하는 부분 

   titles_from_data는 범례 사용여부를 결정 함. False로 설정하면 아래와 같이 출력 됨.(원래 수학,국어,영어 부분)

- 범례가 없으면 그래프도 제대로 구분되어 출력되지 않음. True 설정.

 

6) 실제 그려진 차트를 Worksheet(=ws)에 추가하는 부분

 

 - chart1 객체를 "A10" 위치에 추가 함.

 

ws.add_chart(chart1, "A10")

728x90