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 şey | Nasıl yapılır |
|---|---|
| Bir sütun grafiği ekle | ws.charts.add_bar(top_row, left_col, bottom_row, right_col) |
| Bir çizgi grafiği ekle | ws.charts.add_line(top_row, left_col, bottom_row, right_col) |
| Bir çubuk grafiği ekle | ws.charts.add_bar(top_row, left_col, bottom_row, right_col) |
| Bir pasta grafiği ekle | ws.charts.add_pie(top_row, left_col, bottom_row, right_col) |
| Başlığı ayarla | chart.title = "My Chart" (düz metin; değil .title.text) |
| X ekseni kategorilerini ayarla | chart.category_data = "A2:A6" |
| Adlandırılmış bir seri ekle | chart.n_series.add("B2:B6", category_data="A2:A6", name="Revenue") |
| Lejandı göster | chart.show_legend = True |
| Lejand konumunu ayarla | chart.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 ChartType | Gerekli değil; kullan ws.charts.add_bar() doğrudan |
chart.n_series.category_data = "A2:A5" | chart.category_data = "A2:A5" (grafik seviyesi) |
Kaynaklar
- Aspose.Cells FOSS for Python: Installation
- Geliştirici Kılavuzu: Grafik Oluşturma
- API Referansı: ChartCollection, Chart, NSeries
- Bilgi Tabanı: Python içinde Grafik Nasıl Oluşturulur
- Ürün Genel Bakışı: Özellikler ve yetenekler özeti
- Blog: Aspose.Cells FOSS Tanıtımı: Kütüphane genel bakışı ve hızlı başlangıç
- GitHub Deposu