ทำไมต้องสร้างแผนภูมิด้วยโปรแกรม?

ไพป์ไลน์การรายงานอัตโนมัติมักต้องการแผนภูมิที่ฝังอยู่ในไฟล์ Excel เช่น สรุปไตรมาส, แดชบอร์ดผลลัพธ์ของ ML, หรือเมตริกการดำเนินงาน การทำเช่นนี้โดยไม่ใช้ Microsoft Excel หมายถึงไม่มีค่าไลเซนส์และไม่ต้องโต้ตอบกับ GUI.

Aspose.Cells FOSS for Python ให้ API แผนภูมิที่สะอาดและเป็นแบบ Pythonic: มีเมธอดหนึ่งต่อประเภทแผนภูมิ, ใช้สตริงธรรมดาสำหรับหัวเรื่อง, และการกำหนดค่าซีรีส์โดยใช้ keyword‑argument. API ทั้งหมดจะอธิบายด้านล่าง.


ติดตั้ง

pip install aspose-cells-foss

นำเข้าคลาสที่คุณต้องการ:

from aspose.cells_foss import Workbook, Cell

แผนภูมิสามารถเข้าถึงได้ผ่าน ws.charts; ไม่จำเป็นต้องนำเข้าโมดูลแผนภูมิแยกต่างหาก.


API แผนภูมิในภาพรวม

สิ่งที่คุณต้องการวิธีทำ
เพิ่มแผนภูมิคอลัมน์ws.charts.add_bar(top_row, left_col, bottom_row, right_col)
เพิ่มแผนภูมิเส้นws.charts.add_line(top_row, left_col, bottom_row, right_col)
เพิ่มแผนภูมิแท่งws.charts.add_bar(top_row, left_col, bottom_row, right_col)
เพิ่มแผนภูมิวงกลมws.charts.add_pie(top_row, left_col, bottom_row, right_col)
ตั้งค่าชื่อเรื่องchart.title = "My Chart" (สตริงธรรมดา; ไม่ใช่ .title.text)
ตั้งค่าหมวดหมู่แกน Xchart.category_data = "A2:A6"
เพิ่มซีรีส์ที่มีชื่อchart.n_series.add("B2:B6", category_data="A2:A6", name="Revenue")
แสดงคำอธิบายchart.show_legend = True
ตั้งตำแหน่งคำอธิบายchart.legend_position = "bottom"

ดัชนีแถวและคอลัมน์ทั้งหมดเป็น เริ่มจากศูนย์. ที่ add_* เมธอดคืนค่า Chart อ็อบเจ็กต์โดยตรง (ไม่ใช่ดัชนี).


แผนภูมิคอลัมน์: ทีละขั้นตอน

มาสร้างแผนภูมิคอลัมน์ที่แสดงรายได้และค่าใช้จ่ายรายไตรมาสกัน.

ขั้นตอนที่ 1: สร้างไฟล์งานและเขียนข้อมูล

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

ขั้นตอนที่ 2: เพิ่มแผนภูมิ

วางแผนภูมิด้านล่างข้อมูล (แถว 7 เป็นต้นไป, ครอบคลุมคอลัมน์ 0-8):

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

ขั้นตอนที่ 3: กำหนดหัวเรื่องและคำอธิบายภาพ

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

ขั้นตอนที่ 4: เพิ่มชุดข้อมูล

แต่ละชุดต้องมีช่วงค่าข้อมูล, ช่วงประเภท, และชื่อ:

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

ขั้นตอนที่ 5: บันทึก

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

ตัวอย่างเต็มในบล็อกเดียว:

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

แผนภูมิเส้น: แนวโน้มรายเดือน

รูปแบบเดียวกันทำงานสำหรับ 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")

แผนภูมิวงกลม: ส่วนแบ่งตลาด

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

ข้อผิดพลาดทั่วไปที่ควรหลีกเลี่ยง

ผิดถูก
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) (ตำแหน่ง)chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue")
from aspose.cells.charts import ChartTypeไม่จำเป็น; ใช้ ws.charts.add_bar() โดยตรง
chart.n_series.category_data = "A2:A5"chart.category_data = "A2:A5" (ระดับแผนภูมิ)

แหล่งข้อมูล