Mengapa Membuat Diagram Secara Programatis?
Pipeline pelaporan otomatis sering membutuhkan diagram yang disematkan dalam workbook Excel, seperti ringkasan kuartalan, dasbor hasil ML, atau metrik operasional. Melakukan ini tanpa Microsoft Excel berarti tidak ada biaya lisensi dan tidak ada interaksi GUI.
Aspose.Cells FOSS for Python menyediakan API chart yang bersih dan Pythonic: satu metode per tipe chart, string biasa untuk judul, dan konfigurasi seri berbasis argumen kata kunci. Seluruh API dijelaskan di bawah ini.
Instal
pip install aspose-cells-foss
Impor kelas yang Anda butuhkan:
from aspose.cells_foss import Workbook, Cell
Chart diakses melalui ws.charts; tidak diperlukan impor modul chart terpisah.
API Chart Sekilas
| Apa yang Anda inginkan | Cara melakukannya |
|---|---|
| Tambahkan chart kolom | ws.charts.add_bar(top_row, left_col, bottom_row, right_col) |
| Tambahkan chart garis | ws.charts.add_line(top_row, left_col, bottom_row, right_col) |
| Tambahkan chart batang | ws.charts.add_bar(top_row, left_col, bottom_row, right_col) |
| Tambahkan chart lingkaran | ws.charts.add_pie(top_row, left_col, bottom_row, right_col) |
| Atur judul | chart.title = "My Chart" (string biasa; bukan .title.text) |
| Atur kategori sumbu x | chart.category_data = "A2:A6" |
| Tambahkan seri bernama | chart.n_series.add("B2:B6", category_data="A2:A6", name="Revenue") |
| Tampilkan legenda | chart.show_legend = True |
| Atur posisi legenda | chart.legend_position = "bottom" |
Semua indeks baris dan kolom adalah berbasis nol. The add_* metode mengembalikan Chart objek secara langsung (bukan indeks).
Diagram Kolom: Langkah demi Langkah
Mari buat diagram kolom yang menampilkan pendapatan dan pengeluaran kuartalan.
Langkah 1: Buat workbook 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 diagram
Posisikan diagram di bawah data (baris 7 ke bawah, mencakup kolom 0-8):
chart = ws.charts.add_bar(6, 0, 22, 8)
Langkah 3: Konfigurasikan judul dan legenda
chart.title = "Quarterly Revenue vs Expenses"
chart.show_legend = True
chart.legend_position = "bottom"
Langkah 4: Tambahkan seri data
Setiap seri memerlukan rentang nilai, rentang kategori, dan sebuah 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")
Diagram Garis: Tren Bulanan
Pola yang sama berfungsi 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")
Diagram Lingkaran: Pangsa 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 ChartType | Tidak diperlukan; gunakan ws.charts.add_bar() langsung |
chart.n_series.category_data = "A2:A5" | chart.category_data = "A2:A5" (tingkat bagan) |
Sumber Daya
- Aspose.Cells FOSS for Python: Installation
- Panduan Pengembang: Pembuatan Diagram
- Referensi API: ChartCollection, Chart, NSeries
- Basis Pengetahuan: Cara Membuat Diagram di Python
- Gambaran Produk: Ringkasan fitur dan kemampuan
- Blog: Memperkenalkan Aspose.Cells FOSS: Gambaran perpustakaan dan panduan cepat
- Repositori GitHub