본문으로 건너뛰기
실습하기

데이터를 차트 및 그래프 형태로 시각화하는 방법

차트와 그래프를 활용하면 데이터를 보다 직관적으로 이해할 수 있습니다.

openpyxl는 차트와 그래프까지 코드로 생성할 수 있는 유용한 기능을 제공합니다.

이번 시간에는 openpyxl을 활용해 엑셀 파일에 차트를 추가하는 방법을 알아보겠습니다.


라인 차트(Line Chart) 생성하기

라인 차트는 시간의 흐름에 따른 데이터 변화를 시각적으로 나타낼 때 자주 사용합니다.

다음은 openpyxl을 사용해 라인 차트를 생성하는 코드 예제입니다.

라인 차트 생성하기
from openpyxl import Workbook
from openpyxl.chart import LineChart, Reference

# 새로운 워크북 생성
wb = Workbook()

# 활성 시트 선택
ws = wb.active

# 데이터 입력 (예: 월별 판매량)
data = [
['월', '판매량'],
['1월', 30],
['2월', 40],
['3월', 50],
['4월', 20],
['5월', 60],
]

for row in data:
ws.append(row)

# 차트 생성
line_chart = LineChart()

# 차트 데이터 참조 (B2부터 B6까지)
data = Reference(ws, min_col=2, min_row=2, max_row=6)

# X축(카테고리) 레이블 참조 (A2부터 A6까지)
cats = Reference(ws, min_col=1, min_row=2, max_row=6)

# 데이터에 제목 포함하지 않음
line_chart.add_data(data, titles_from_data=False)
line_chart.set_categories(cats)
line_chart.title = "월별 판매량"
line_chart.x_axis.title = "월"
line_chart.y_axis.title = "판매량"

# 시트에 차트 추가 (D1 셀 위치에)
ws.add_chart(line_chart, "A10")

# 파일 저장
wb.save("output_file.xlsx")

코드 설명

  • line_chart = LineChart(): 라인 차트 객체를 생성

  • Reference: 차트에 사용할 데이터 범위와 카테고리(월)를 참조

  • line_chart.add_data(data, titles_from_data=False): 차트에 데이터를 추가하고, 데이터에 제목을 포함하지 않음

  • line_chart.set_categories(cats): X축(카테고리) 레이블을 설정

  • line_chart.title: 차트 제목을 설정

  • line_chart.x_axis.title: X축 제목을 설정

  • line_chart.y_axis.title: Y축 제목을 설정

  • ws.add_chart(line_chart, "A10"): 시트에 차트를 추가


물론 단순한 데이터를 다룰 때는 엑셀에서 차트를 직접 그리는 것이 빠릅니다.

하지만 대규모의 데이터 또는 자주 업데이트되는 데이터를 다룰 때는 코드로 차트 생성을 자동화하는 것이 훨씬 효율적입니다.


막대 차트(Bar Chart) 생성하기

막대 차트는 데이터의 크기를 비교할 때 자주 사용하는 차트 유형입니다.

다음은 파이썬 코드로 막대 차트를 생성하는 코드 예제입니다.

막대 차트 생성하기
from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference

# 새로운 워크북 생성
wb = Workbook()

# 활성 시트 선택
ws = wb.active

# 데이터 입력 (예: 월별 수익)
data = [
['월', '수익'],
['1월', 1000],
['2월', 1500],
['3월', 1200],
['4월', 1700],
['5월', 1300],
]

for row in data:
ws.append(row)

# 차트 생성
bar_chart = BarChart()

# 차트 데이터 참조 (B2부터 B6까지)
data = Reference(ws, min_col=2, min_row=2, max_row=6)

# X축(카테고리) 레이블 참조 (A2부터 A6까지)
cats = Reference(ws, min_col=1, min_row=2, max_row=6)

# 데이터에 제목 포함하지 않음
bar_chart.add_data(data, titles_from_data=False)
bar_chart.set_categories(cats)
bar_chart.title = "월별 수익"
bar_chart.x_axis.title = "월"
bar_chart.y_axis.title = "수익"

# 시트에 차트 추가 (D1 셀 위치에)
ws.add_chart(bar_chart, "A10")

# 파일 저장
wb.save("output_file.xlsx")

코드 설명

  • bar_chart = BarChart(): 막대 차트 객체를 생성

  • Reference: 차트에 사용할 데이터 범위와 카테고리(월)를 참조

  • bar_chart.add_data(data, titles_from_data=False): 차트에 데이터를 추가하고, 데이터에 제목을 포함하지 않음

  • bar_chart.set_categories(cats): X축(카테고리) 레이블을 설정

  • bar_chart.title: 차트 제목을 설정

  • bar_chart.x_axis.title: X축 제목을 설정

  • bar_chart.y_axis.title: Y축 제목을 설정

  • ws.add_chart(bar_chart, "A10"): 시트에 차트를 추가


다양한 차트 생성하기

openpyxl는 사용하면 라인 차트와 막대 차트 외에도 파이 차트(Pie Chart), 도넛 차트(Doughnut Chart), 히스토그램(Histogram) 등 다양한 차트를 형식을 지원합니다.

각 차트 유형은 chart 모듈에서 더 자세히 알아볼 수 있습니다.

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!