[Python데이터시각화] 4. 차트 이미지를 저장하고 엑셀에 반영하기
Figure.savefig_matplotlib.figure.Figure 타입
figure.savefig(저장경로, dpi=None, ...)
- 지원포맷
- eps, pdf, pgf, png, ps, raw, rgba, svg
- dpi옵션
- default: 75
- 인쇄 목적일 경우 300 권장
차트 이미지를 엑셀에 반영하기
- Figure를 이미지 파일로 저장해서, 엑셀에 수동으로 붙혀넣기
- Figure를 이미지로 저장해서, 이미지를 클립보드에 복사한 후에 엑셀에 수동으로 붙여넣기
- Figure를 xlwings를 통해, 엑셀에 바로 붙여널기
Xlwings 라이브러리
- 엑셀 UI 자동화 라이브러리
- 엑셀 프로그램 필수(윈도우: 엑셀 2007 이상, 맥: 엑셀 2016 이상 지원)
- Anaconda Python에 기본 포함
- 설치 필요 시 둘 중 하나 실행 필요
conda install xlwings
pip install xlwings
Figure를 엑셀에 추가하기
sheet.pictures.add(image, ..., left=0, top=0, width=None, height=None, name=None, update=False)
- image
- 이미지 파일 경로 혹은 Figure 객체
- name
- 각 Picture에 대한 식별자
- 지정하지 않으면 “Picture 일련번호” 형식으로 자동 지정
- update
- name이 겹칠 경우 업데이트 여부
- name이 겹치는 데 update=False일 경우, ShapeAleadyExist 예외 발생
- left, top
- 그림이 추가되는 행,열
- width, height
- 그림 크기
- left, top, width, height는 최초 그림 생성에만 관여
**빈 엑셀 파일을 열어놓고 진행 필요
DataFrame/Figure 반영하기(1)
import xlwings as xw
def 엑셀에_반영(start_range, df, name):
ax = df.plot(figsize=(7, 4)) # df 전체 데이터로 Plot
start_range.value = df.iloc[:10] # 지정 Range에 df중 상위 10개 반영
# pictures left/top 좌표 계산
table_range = sheet.range(start_cell).expand()
left = table_range.left + table_range.width + 1
top = table_range.top
sheet.pictures.add(ax.figure, name=name, update=True, left=left, top=top)
# 컬럼 가로크기 자동조정
sheet.range(start_cell).expand().columns.autofit()