Cara Membuat Grafik di Excel dengan Python

Cara Membuat Grafik di Excel dengan Python

Diagram mengubah data spreadsheet mentah menjadi wawasan visual. Aspose.Cells FOSS for Python memungkinkan Anda membuat diagram kolom, garis, batang, dan pai secara programatis, dengan kontrol penuh atas seri data, label kategori, judul diagram, dan posisi, tanpa memerlukan Microsoft Excel.

Mengapa Membuat Diagram dengan Aspose.Cells FOSS?

  1. Tidak perlu Excel: Bangun diagram sepenuhnya di Python, di semua OS.
  2. API metode-per-jenis: Gunakan add_bar(), add_line(), add_pie(), add_area(), dan lainnya — satu metode per jenis diagram.
  3. Seri bernama: Konfigurasikan setiap seri dengan argumen kata kunci name=, category_data=.
  4. Penempatan presisi: Kendalikan batas diagram dengan koordinat sel (top_row, left_col, bottom_row, right_col).

Panduan Langkah-demi-Langkah

Langkah 1: Instal Aspose.Cells FOSS untuk Python

pip install aspose-cells-foss

Langkah 2: Buat Workbook dan Isi Data

Buat buku kerja baru dan tulis data numerik serta label kategori ke sel:

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 = 47000

Langkah 3: Tambahkan Diagram Kolom

Gunakan ws.charts.add_bar(top_row, left_col, bottom_row, right_col) untuk menyisipkan diagram kolom. Metode ini mengembalikan objek diagram secara langsung:

##Insert a column chart occupying rows 7-22, columns 0-7
chart = ws.charts.add_bar(6, 0, 22, 7)

Indeks baris dan kolom berbasis nol.


Langkah 4: Konfigurasikan Seri Data

Tambahkan setiap seri data menggunakan chart.n_series.add() dengan argumen kata kunci:

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

Argumen category_data menentukan rentang sel untuk label sumbu x. Argumen name mengatur label legenda seri.


Langkah 5: Atur Judul Diagram dan Data Kategori

Atur judul diagram sebagai string biasa:

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"

Langkah 6: Simpan Workbook

workbook.save("sales_chart.xlsx")
print("Workbook with chart saved.")

Contoh diagram kolom lengkap:

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

Langkah 7: Buat Diagram Garis

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

Masalah Umum dan Solusi

1. Grafik muncul kosong atau tidak berisi

Penyebab: Rentang data yang diberikan ke n_series.add() tidak berisi nilai, atau string rentang sel tidak benar.
Solusi: Verifikasi bahwa rentang sel cocok dengan data Anda. Periksa ws.cells["B2"].value bukan None.

2. Label kategori tidak muncul pada sumbu x

Cause: chart.category_data tidak disetel, atau rentang mengarah ke sel kosong.
Fix: Atur chart.category_data = "A2:A5" di mana kolom A berisi string label Anda.

3. Posisi bagan tumpang tindih data

Penyebab: Batas baris dalam add_bar() tumpang tindih dengan area data.
Perbaikan: Letakkan diagram di bawah data: ws.charts.add_bar(data_last_row + 2, 0, data_last_row + 18, 7).

4. AttributeError: 'ChartCollection' object has no attribute 'add'

Penyebab: Perpustakaan FOSS menggunakan API method-per-type, bukan add(ChartType.COLUMN, ...).
Perbaikan: Gunakan ws.charts.add_bar(...), ws.charts.add_line(...), ws.charts.add_pie(...), atau ws.charts.add_area(...).


Pertanyaan yang Sering Diajukan

Jenis diagram apa yang didukung?

Gunakan add_bar(), add_line(), add_pie(), add_area(), dan add_stock() untuk tipe yang paling umum. Kelima ini memiliki dukungan serialisasi XML penuh. Periksa kelas ChartCollection untuk daftar lengkap metode add_* yang tersedia.

Bisakah saya membuat grafik dalam file Excel yang sudah ada?

Ya. Muat workbook dengan Workbook("existing.xlsx"), akses lembar target, dan tambahkan bagan menggunakan metode ws.charts.add_*() yang sesuai.

Bagaimana cara mengatur judul diagram?

Tetapkan string biasa: chart.title = "My Chart Title". Tidak ada sub‑properti .text: judulnya adalah string itu sendiri.

Apakah pendekatan ini kompatibel dengan pandas?

Ya. Tulis nilai DataFrame pandas ke sel dalam sebuah loop, lalu tambahkan diagram pada rentang data tersebut.


Sumber Daya Terkait:

 Bahasa Indonesia