데이터를 차트로 시각화하는 방법
차트(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 강의를 등록해 주세요!