Mengapa Membangun Bagan Secara Program?

Pipeline pelaporan otomatis sering membutuhkan grafik yang tertanam dalam buku kerja Excel, seperti ringkasan triwulan, dasbor hasil ML, atau metrik operasional. Melakukan ini tanpa Microsoft Excel berarti tidak ada biaya lisensi dan tidak adanya interaksi GUI.

Aspose.Cells FOSS for Python menyediakan API grafik Python yang bersih: satu metode per jenis bagan, string biasa untuk judul, dan konfigurasi seri berbasis argumen kata kunci. Seluruh API dibahas di bawah ini.


Instal (Membuat)

pip install aspose-cells-foss

Impor kelas yang Anda butuhkan:

from aspose.cells_foss import Workbook, Cell

Bagan dapat diakses melalui: ws.charts;Tidak diperlukan impor modul grafik terpisah.


API Grafik Sekilas

Apa yang kau inginkan?Bagaimana cara melakukannya?
Tambahkan tabel kolomws.charts.add_bar(top_row, left_col, bottom_row, right_col)
Tambahkan grafik garisws.charts.add_line(top_row, left_col, bottom_row, right_col)
Tambahkan grafik barws.charts.add_bar(top_row, left_col, bottom_row, right_col)
Tambahkan grafik paiws.charts.add_pie(top_row, left_col, bottom_row, right_col)
Tetapkan judulnyachart.title = "My Chart" (jaring biasa; tidak .title.text)
Tentukan kategori sumbu xchart.category_data = "A2:A6"
Tambahkan seri yang diberi namachart.n_series.add("B2:B6", category_data="A2:A6", name="Revenue")
Legenda acarachart.show_legend = True
Tentukan posisi legendachart.legend_position = "bottom"

Semua indeks baris dan kolom adalah: nol-berbasis.- Aku tidak tahu. add_* metode mengembalikan nilai Chart objek langsung (bukan indeks).


Bagan: Langkah demi langkah

Mari kita membuat grafik kolom yang menunjukkan pendapatan dan pengeluaran triwulan.

Langkah 1: Buat buku kerja dan tulis data

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

Langkah 2: Tambahkan bagan

Tempatkan grafik di bawah data (baris 7 dan seterusnya, mencakup kolom 0-8):

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

Langkah 3: Konfigurasi judul dan legenda

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

Langkah 4: Tambahkan seri data

Setiap seri membutuhkan rentang nilai, rentan kategori, dan nama:

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

Langkah 5: Simpan

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

Contoh lengkap dalam satu blok:

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

Bagan garis: Tren bulanan

Pola yang sama bekerja untuk 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")

Bagan: Bagian Pasar

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

Kesalahan Umum yang Harus Dihindari

Salah.Benar.
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) (posisional)chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue")
from aspose.cells.charts import ChartTypeTidak diperlukan; gunakan ws.charts.add_bar() langsung
chart.n_series.category_data = "A2:A5"chart.category_data = "A2:A5" (tingkat grafik)

Sumber daya