Grafikleri Programlı Olarak Neden Oluşturmalısınız?

Otomatik raporlama hatları genellikle çeyrek özetleri, ML sonuç panoları veya operasyonel metrikler gibi Excel çalışma kitaplarına gömülü grafiklere ihtiyaç duyar. Bunu Microsoft Excel olmadan yapmak, lisans maliyeti ve GUI etkileşimi olmaması demektir.

Aspose.Cells FOSS for Python temiz, Pythonik bir grafik API’si sağlar: grafik türü başına bir yöntem, başlık için düz bir metin ve anahtar‑kelime‑argüman tabanlı seri yapılandırması. Tüm API aşağıda açıklanmıştır.


Kurulum

pip install aspose-cells-foss

İhtiyacınız olan sınıfları içe aktarın:

from aspose.cells_foss import Workbook, Cell

Grafiklere şu şekilde erişilir: ws.charts; ayrı bir chart modülü içe aktarmaya gerek yok.


Grafik API’sine Bir Bakış

İstediğiniz şeyNasıl yapılır
Bir sütun grafiği eklews.charts.add_bar(top_row, left_col, bottom_row, right_col)
Bir çizgi grafiği eklews.charts.add_line(top_row, left_col, bottom_row, right_col)
Bir çubuk grafiği eklews.charts.add_bar(top_row, left_col, bottom_row, right_col)
Bir pasta grafiği eklews.charts.add_pie(top_row, left_col, bottom_row, right_col)
Başlığı ayarlachart.title = "My Chart" (düz metin; değil .title.text)
X ekseni kategorilerini ayarlachart.category_data = "A2:A6"
Adlandırılmış bir seri eklechart.n_series.add("B2:B6", category_data="A2:A6", name="Revenue")
Lejandı gösterchart.show_legend = True
Lejand konumunu ayarlachart.legend_position = "bottom"

Tüm satır ve sütun indeksleri şudur sıfır tabanlı. Bu add_* yöntemler döndürür Chart nesneyi doğrudan (indeks değil).


Sütun Grafiği: Adım Adım

Çeyrek gelir ve giderleri gösteren bir sütun grafiği oluşturalım.

Adım 1: Çalışma kitabını oluşturun ve verileri yazın

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

Adım 2: Grafiği ekleyin

Grafiği verilerin altına konumlandırın (satır 7’den itibaren, 0-8 sütunlarını kapsayacak şekilde):

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

Adım 3: Başlığı ve lejandı yapılandırın

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

Adım 4: Veri serileri ekle

Her serinin bir değer aralığına, kategori aralığına ve bir isme ihtiyacı vardır:

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

Adım 5: Kaydet

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

Tam örnek tek bir blokta:

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

Çizgi Grafiği: Aylık Trend

Aynı desen şunun için çalışır 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")

Pasta Grafiği: Pazar Payı

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

Kaçınılması Gereken Yaygın Hatalar

YanlışDoğru
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) (konumsal)chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue")
from aspose.cells.charts import ChartTypeGerekli değil; kullan ws.charts.add_bar() doğrudan
chart.n_series.category_data = "A2:A5"chart.category_data = "A2:A5" (grafik seviyesi)

Kaynaklar