데이터를 차트로 시각화하는 방법
차트(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 모듈에서 더 자세히 알아볼 수 있습니다.
다음 중 빈칸에 들어갈 가장 적절한 객체는 무엇일까요?
가이드라인
AI 튜터
배포
디자인
업로드
수업 노트
즐겨찾기
도움말
코드 에디터
실행 결과
문서가 비어 있습니다.
코드를 실행해보세요.