Tại sao xây dựng biểu đồ bằng lập trình?

Các pipeline báo cáo tự động thường cần biểu đồ được nhúng trong sổ làm việc Excel, chẳng hạn như bản tóm tắt hàng quý, bảng điều khiển kết quả ML, hoặc các chỉ số vận hành. Thực hiện việc này mà không có Microsoft Excel đồng nghĩa với việc không tốn phí bản quyền và không cần tương tác giao diện người dùng.

Aspose.Cells FOSS for Python cung cấp một API biểu đồ sạch sẽ, mang phong cách Python: một phương thức cho mỗi loại biểu đồ, một chuỗi thuần cho tiêu đề, và cấu hình series dựa trên các đối số khóa. Toàn bộ API được trình bày bên dưới.


Cài đặt

pip install aspose-cells-foss

Nhập các lớp bạn cần:

from aspose.cells_foss import Workbook, Cell

Biểu đồ được truy cập qua ws.charts; không cần nhập khẩu mô-đun biểu đồ riêng.


API Biểu đồ Nhìn nhanh

Bạn muốnCách thực hiện
Thêm biểu đồ cộtws.charts.add_bar(top_row, left_col, bottom_row, right_col)
Thêm biểu đồ đườngws.charts.add_line(top_row, left_col, bottom_row, right_col)
Thêm biểu đồ thanhws.charts.add_bar(top_row, left_col, bottom_row, right_col)
Thêm biểu đồ trònws.charts.add_pie(top_row, left_col, bottom_row, right_col)
Đặt tiêu đềchart.title = "My Chart" (chuỗi thuần; không .title.text)
Đặt các danh mục trục xchart.category_data = "A2:A6"
Thêm một series có tênchart.n_series.add("B2:B6", category_data="A2:A6", name="Revenue")
Hiển thị chú giảichart.show_legend = True
Đặt vị trí chú giảichart.legend_position = "bottom"

Tất cả các chỉ số hàng và cột là đánh số từ 0. Cái add_* các phương thức trả về Chart đối tượng trực tiếp (không phải một chỉ mục).


Biểu đồ Cột: Từng bước

Hãy tạo một biểu đồ cột hiển thị doanh thu và chi phí hàng quý.

Bước 1: Tạo sổ làm việc và ghi dữ liệu

from aspose.cells_foss import Workbook, Cell

wb = Workbook()
ws = wb.worksheets[0]
ws.name = "Q1-Q4 Report"

##Headers
ws.cells["A1"].value = "Quarter"
ws.cells["B1"].value = "Revenue"
ws.cells["C1"].value = "Expenses"

##Data
quarters = ["Q1", "Q2", "Q3", "Q4"]
revenue  = [50000, 62000, 71000, 89000]
expenses = [32000, 38000, 41000, 47000]

for i, (q, r, e) in enumerate(zip(quarters, revenue, expenses), start=2):
    ws.cells[f"A{i}"].value = q
    ws.cells[f"B{i}"].value = r
    ws.cells[f"C{i}"].value = e

Bước 2: Thêm biểu đồ

Đặt biểu đồ dưới dữ liệu (bắt đầu từ hàng 7, trải qua các cột 0-8):

chart = ws.charts.add_bar(6, 0, 22, 8)

Bước 3: Cấu hình tiêu đề và chú giải

chart.title = "Quarterly Revenue vs Expenses"
chart.show_legend = True
chart.legend_position = "bottom"

Bước 4: Thêm chuỗi dữ liệu

Mỗi chuỗi cần một phạm vi giá trị, phạm vi danh mục và một tên:

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")

Bước 5: Lưu

wb.save("quarterly_report.xlsx")
print("Chart saved to quarterly_report.xlsx")

Ví dụ đầy đủ trong một khối:

from aspose.cells_foss import Workbook, Cell

wb = Workbook()
ws = wb.worksheets[0]
ws.name = "Q1-Q4 Report"

##Data
ws.cells["A1"].value = "Quarter"
ws.cells["B1"].value = "Revenue"
ws.cells["C1"].value = "Expenses"

data = [("Q1", 50000, 32000), ("Q2", 62000, 38000),
        ("Q3", 71000, 41000), ("Q4", 89000, 47000)]
for i, (q, r, e) in enumerate(data, start=2):
    ws.cells[f"A{i}"].value = q
    ws.cells[f"B{i}"].value = r
    ws.cells[f"C{i}"].value = e

chart = ws.charts.add_bar(6, 0, 22, 8)
chart.title = "Quarterly Revenue 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"

wb.save("quarterly_report.xlsx")

Biểu đồ Đường: Xu hướng Hàng tháng

Mẫu tương tự hoạt động cho add_line():

from aspose.cells_foss import Workbook, Cell

wb = Workbook()
ws = wb.worksheets[0]

months  = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
actuals = [42000, 47500, 53000, 49000, 61000, 68000]
targets = [45000, 45000, 50000, 55000, 60000, 65000]

ws.cells["A1"].value = "Month"
ws.cells["B1"].value = "Actual"
ws.cells["C1"].value = "Target"

for i, (m, a, t) in enumerate(zip(months, actuals, targets), start=2):
    ws.cells[f"A{i}"].value = m
    ws.cells[f"B{i}"].value = a
    ws.cells[f"C{i}"].value = t

chart = ws.charts.add_line(8, 0, 24, 8)
chart.title = "Monthly Revenue: Actual vs Target"
chart.category_data = "A2:A7"
chart.n_series.add("B2:B7", category_data="A2:A7", name="Actual")
chart.n_series.add("C2:C7", category_data="A2:A7", name="Target")
chart.show_legend = True
chart.legend_position = "right"

wb.save("monthly_trend.xlsx")

Biểu đồ Tròn: Thị phần

from aspose.cells_foss import Workbook, Cell

wb = Workbook()
ws = wb.worksheets[0]

segments = ["Product A", "Product B", "Product C", "Product D"]
shares   = [40, 25, 20, 15]

ws.cells["A1"].value = "Segment"
ws.cells["B1"].value = "Share %"
for i, (s, v) in enumerate(zip(segments, shares), start=2):
    ws.cells[f"A{i}"].value = s
    ws.cells[f"B{i}"].value = v

chart = ws.charts.add_pie(6, 0, 20, 7)
chart.title = "Market Share by Product"
chart.category_data = "A2:A5"
chart.n_series.add("B2:B5", category_data="A2:A5", name="Share")
chart.show_legend = True
chart.legend_position = "right"

wb.save("market_share.xlsx")

Những Sai lầm Thường gặp Cần Tránh

SaiĐúng
ws.charts.add(ChartType.COLUMN, 5, 0, 15, 5)ws.charts.add_bar(5, 0, 15, 5)
chart.title.text = "Revenue"chart.title = "Revenue"
chart.n_series.add("B2:B5", True) (vị trí)chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue")
from aspose.cells.charts import ChartTypeKhông cần; sử dụng ws.charts.add_bar() trực tiếp
chart.n_series.category_data = "A2:A5"chart.category_data = "A2:A5" (cấp độ biểu đồ)

Tài nguyên