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

데이터를 차트로 시각화하는 방법

차트(Chart)를 활용하면 데이터를 보다 직관적으로 이해할 수 있게 시각화할 수 있습니다.

물론, 단순한 데이터를 다룰 때는 엑셀의 기능을 활용해 차트를 직접 그리는 것이 더 빠릅니다.

그러나 대규모 데이터나 자주 업데이트되는 데이터를 다룰 때는 프로그램을 통해 차트 생성을 자동화하는 것이 훨씬 효율적입니다.

openpyxl는 차트를 코드로 생성할 수 있는 유용한 메서드를 제공합니다.

이번 수업에서는 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"): 시트에 차트를 추가


위 코드는 간편한 이해를 돕기 위해, data 변수에 월별 판매량 데이터를 리스트로 정의했습니다.

하지만 openpyxl을 사용하면 파일 경로(예: C:/Users/사용자명/Desktop/output_file.xlsx)를 지정해, 엑셀 파일을 직접 불러와 데이터를 읽어올 수 있습니다.

엑셀 파일에서 데이터 읽어오기
from openpyxl import load_workbook

# 엑셀 파일 불러오기

wb = load_workbook("C:/Users/사용자명/Desktop/input_file.xlsx")
ws = wb.active

# 데이터 읽어오기
data = []

for row in ws.iter_rows(min_row=2, values_only=True):
data.append(row)

막대 차트(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 강의를 등록해 주세요!