Python을 사용하여 Excel에서 차트 만들기
차트는 원시 스프레드시트 데이터를 시각적 인사이트로 전환합니다. Aspose.Cells FOSS for Python은 열, 선, 막대 및 파이 차트를 프로그래밍 방식으로 생성할 수 있게 하며, 데이터 시리즈, 범주 레이블, 차트 제목 및 위치에 대한 완전한 제어를 제공하고 Microsoft Excel이 필요하지 않습니다.
왜 Aspose.Cells FOSS로 차트를 만들까요?
- Excel이 필요 없음: 차트를 완전히 파이썬으로, 모든 OS에서 구축합니다.
- Method-per-type API:
add_bar(),add_line(),add_pie(),add_area()등을 사용합니다 — 차트 유형당 하나의 메서드. - Named series: 각 시리즈를
name=,category_data=키워드 인수로 구성합니다. - Precise placement: 셀 좌표(top_row, left_col, bottom_row, right_col)로 차트 경계를 제어합니다.
단계별 가이드
1단계: Python용 Aspose.Cells FOSS 설치
pip install aspose-cells-foss2단계: 워크북을 만들고 데이터를 채우기
새 워크북을 만들고 셀에 숫자 데이터와 카테고리 레이블을 씁니다:
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
ws.name = "Sales Data"
##Category labels in column A (rows 2-5, leaving row 1 for a header)
ws.cells["A1"].value = "Quarter"
ws.cells["A2"].value = "Q1"
ws.cells["A3"].value = "Q2"
ws.cells["A4"].value = "Q3"
ws.cells["A5"].value = "Q4"
##Revenue series in column B
ws.cells["B1"].value = "Revenue"
ws.cells["B2"].value = 50000
ws.cells["B3"].value = 62000
ws.cells["B4"].value = 71000
ws.cells["B5"].value = 89000
##Expense series in column C
ws.cells["C1"].value = "Expenses"
ws.cells["C2"].value = 32000
ws.cells["C3"].value = 38000
ws.cells["C4"].value = 41000
ws.cells["C5"].value = 470003단계: 열 차트 추가
ws.charts.add_bar(top_row, left_col, bottom_row, right_col)을 사용하여 열 차트를 삽입합니다. 이 메서드는 차트 객체를 직접 반환합니다:
##Insert a column chart occupying rows 7-22, columns 0-7
chart = ws.charts.add_bar(6, 0, 22, 7)행 및 열 인덱스는 0부터 시작합니다.
4단계: 데이터 시리즈 구성
키워드 인수를 사용하여 chart.n_series.add()로 각 데이터 시리즈를 추가합니다:
##Add Revenue series
chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue")
##Add Expenses series
chart.n_series.add("C2:C5", category_data="A2:A5", name="Expenses")category_data 인수는 x축 레이블에 대한 셀 범위를 지정합니다. name 인수는 시리즈 범례 레이블을 설정합니다.
5단계: 차트 제목 및 카테고리 데이터 설정
차트 제목을 일반 문자열로 설정합니다:
chart.title = "Quarterly Sales vs Expenses"
chart.category_data = "A2:A5" # x-axis labels at chart level
chart.show_legend = True
chart.legend_position = "bottom"6단계: 워크북 저장
workbook.save("sales_chart.xlsx")
print("Workbook with chart saved.")완전한 열 차트 예시:
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
##Data
labels = ["Q1", "Q2", "Q3", "Q4"]
revenue = [50000, 62000, 71000, 89000]
expenses = [32000, 38000, 41000, 47000]
ws.cells["A1"].value = "Quarter"
ws.cells["B1"].value = "Revenue"
ws.cells["C1"].value = "Expenses"
for i, (label, rev, exp) in enumerate(zip(labels, revenue, expenses), start=2):
ws.cells[f"A{i}"].value = label
ws.cells[f"B{i}"].value = rev
ws.cells[f"C{i}"].value = exp
chart = ws.charts.add_bar(6, 0, 22, 7)
chart.title = "Quarterly Sales vs Expenses"
chart.category_data = "A2:A5"
chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue")
chart.n_series.add("C2:C5", category_data="A2:A5", name="Expenses")
chart.show_legend = True
chart.legend_position = "bottom"
workbook.save("quarterly_chart.xlsx")단계 7: 라인 차트 만들기
같은 패턴이 add_line()에 대해 작동합니다:
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
revenue = [42000, 47500, 53000, 49000, 61000, 68000]
ws.cells["A1"].value = "Month"
ws.cells["B1"].value = "Revenue"
for i, (m, r) in enumerate(zip(months, revenue), start=2):
ws.cells[f"A{i}"].value = m
ws.cells[f"B{i}"].value = r
chart = ws.charts.add_line(8, 0, 24, 8)
chart.title = "Monthly Revenue Trend"
chart.category_data = "A2:A7"
chart.n_series.add("B2:B7", category_data="A2:A7", name="Revenue")
chart.show_legend = True
workbook.save("trend_chart.xlsx")일반적인 문제 및 해결책
1. 차트가 비어 있거나 빈 화면으로 표시됩니다
Cause: 전달된 데이터 범위 n_series.add()에 값이 없거나 셀 범위 문자열이 올바르지 않습니다.
Fix: 셀 범위가 데이터와 일치하는지 확인하십시오. ws.cells["B2"].value가 None가 아닌지 확인하십시오.
2. 카테고리 레이블이 x축에 표시되지 않음
Cause: chart.category_data가 설정되지 않았거나, 범위가 빈 셀을 가리키고 있습니다.
Fix: 열 A에 레이블 문자열이 포함된 경우 chart.category_data = "A2:A5"를 설정하십시오.
3. 차트 위치가 데이터와 겹칩니다
Cause: add_bar()의 행 경계가 데이터 영역과 겹칩니다.
Fix: 차트를 데이터 아래에 배치하십시오: ws.charts.add_bar(data_last_row + 2, 0, data_last_row + 18, 7).
4. AttributeError: 'ChartCollection' object has no attribute 'add'
원인: FOSS 라이브러리는 메서드‑타입별 API를 사용하며, add(ChartType.COLUMN, ...)가 아닙니다.
수정: ws.charts.add_bar(...), ws.charts.add_line(...), ws.charts.add_pie(...) 또는 ws.charts.add_area(...)을 사용하십시오.
자주 묻는 질문
지원되는 차트 유형은 무엇입니까?
가장 일반적인 유형에는 add_bar(), add_line(), add_pie(), add_area() 및 add_stock()을 사용하십시오. 이 다섯 가지는 전체 XML 직렬화 지원을 제공합니다. 사용 가능한 add_* 메서드의 전체 목록은 ChartCollection 클래스를 확인하십시오.
기존 Excel 파일에 차트를 만들 수 있나요?
예. Workbook("existing.xlsx")을 사용하여 워크북을 로드하고, 대상 시트에 접근한 다음, 적절한 ws.charts.add_*() 메서드를 사용하여 차트를 추가합니다.
차트 제목을 어떻게 설정하나요?
일반 문자열을 할당합니다: chart.title = "My Chart Title". .text 하위 속성이 없습니다: 제목은 문자열 자체입니다.
이 접근 방식은 pandas와 호환됩니까?
예. pandas DataFrame 값을 루프에서 셀에 쓰고, 그런 다음 해당 데이터 범위에 차트를 추가합니다.
관련 리소스: