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

[OpenPyXL] 차트 그리기 - (5) Radar Chart

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

이번 포스팅에서는 openpyxl을 이용한 레이더 차트(Radar Chart)를 그려보고 엑셀 파일에 삽입하는 방법을 알아본다.


   Radar Chart

- 목차 -

1. Radar Chart 그리기

2. Radar Chart Style


1. Radar Chart 그리기

openpyxl에서는 레이더 차트(Radar Chart)를 그리기 위한 RadarChart 클래스를 제공하고 있다. 아래 코드는 RadarChart을 이용하여 레이터 차트(Radar Chart)를 정의하고 엑셀에 삽입한다.

 

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

wb = Workbook()
ws = wb.active

## 데이터 생성
rows = [
    ['Month', "Bulbs", "Seeds", "Flowers", "Trees & shrubs"],
    ['Jan', 0, 2500, 500, 0,],
    ['Feb', 0, 5500, 750, 1500],
    ['Mar', 0, 9000, 1500, 2500],
    ['Apr', 0, 6500, 2000, 4000],
    ['May', 0, 3500, 5500, 3500],
    ['Jun', 0, 0, 7500, 1500],
    ['Jul', 0, 0, 8500, 800],
    ['Aug', 1500, 0, 7000, 550],
    ['Sep', 5000, 0, 3500, 2500],
    ['Oct', 8500, 0, 2500, 6000],
    ['Nov', 3500, 0, 500, 5500],
    ['Dec', 500, 0, 100, 3000 ],
]

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

## 참조 데이터 설정
labels = Reference(ws, min_col=1, min_row=2, max_row=13) ## 범주형 참조 데이터
data = Reference(ws, min_col=2, max_col=5, min_row=1, max_row=13) ## 연속형 참조 데이터
    
## 레이터 차트 정의
radar_type = ['standard', 'filled', 'marker']
temp = {0:'A', 1:'I', 2:'Q'}
for i, rt in enumerate(radar_type):
    chart = RadarChart()
    chart.type = rt ## radar 유형

    chart.add_data(data, titles_from_data=True) ## 연속형 데이터 등록
    chart.set_categories(labels) ## 범주형 데이터 설정
    chart.style = 26 ## 차트 스타일 1~48
    chart.title = rt
    chart.y_axis.delete = True ## y축 제거
    
    ws.add_chart(chart, f"{temp[i]}16") ## 차트 삽입

wb.save("radar.xlsx")

 

line 33~45

RadarChart 클래스는 type 필드를 통해 레이더 차트 유형을 선택할 수 있다. 레이터 차트 유형은 'standard', 'filled', 'marker'이 있다. 레이더 차트로 시각화할 데이터를 설정해주고 사전에 설정된 차트 스타일 26번을 선택했다. 차트 스타일은 1~48까지 선택할 수 있는데 각 숫자에 대응하는 스타일은 아래에서 확인할 수 있다. 마지막으로 y축을 제거한 뒤 차트에 삽입한다.

 


2. Radar Chart Style

openpyxl에서는 1~48까지 사전에 정의된 레이터 차트 스타일을 제공한다. 아래 그림을 보고 원하는 스타일을 선택하면 되겠다.

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


- 참고 자료 -

Radar Charts - https://openpyxl.readthedocs.io/en/stable/charts/radar.html


댓글


맨 위로