Python ile Excel'de Grafikler Nasıl Oluşturulur
Grafikler, ham elektronik tablo verilerini görsel içgörülere dönüştürür. Aspose.Cells FOSS for Python, veri serileri, kategori etiketleri, grafik başlığı ve konumu üzerinde tam kontrol sağlayarak, sütun, çizgi, çubuk ve pasta grafiklerini programlı olarak oluşturmanıza olanak tanır, Microsoft Excel gerektirmeden.
Aspose.Cells FOSS ile Neden Grafik Oluşturmalısınız?
- Excel gerekmez: Grafiklerinizi tamamen Python’da, herhangi bir işletim sisteminde oluşturun.
- Tür başına yöntem API’si:
add_bar(),add_line(),add_pie(),add_area()ve daha fazlasını kullanın — grafik türü başına bir yöntem. - Adlandırılmış seriler: Her seriyi
name=,category_data=anahtar kelime argümanlarıyla yapılandırın. - Kesin konumlandırma: Grafik sınırlarını hücre koordinatlarıyla (top_row, left_col, bottom_row, right_col) kontrol edin.
Adım Adım Kılavuz
Adım 1: Python için Aspose.Cells FOSS’yi kurun
pip install aspose-cells-fossAdım 2: Bir Çalışma Kitabı Oluşturun ve Verileri Doldurun
Yeni bir çalışma kitabı oluşturun ve sayısal verileri ayrıca kategori etiketlerini hücrelere yazın:
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 = 47000Adım 3: Sütun Grafiği Ekle
ws.charts.add_bar(top_row, left_col, bottom_row, right_col) kullanarak bir sütun grafiği ekleyin. Yöntem doğrudan bir grafik nesnesi döndürür:
##Insert a column chart occupying rows 7-22, columns 0-7
chart = ws.charts.add_bar(6, 0, 22, 7)Satır ve sütun indeksleri sıfır tabanlıdır.
Adım 4: Veri Serilerini Yapılandır
Her veri serisini chart.n_series.add() kullanarak anahtar kelime argümanlarıyla ekleyin:
##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")category_data argümanı x ekseni etiketleri için hücre aralığını belirtir. name argümanı seri lejand etiketini ayarlar.
Adım 5: Grafik Başlığını ve Kategori Verilerini Ayarlayın
Grafik başlığını düz bir dize olarak ayarlayın:
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"Adım 6: Çalışma Kitabını Kaydet
workbook.save("sales_chart.xlsx")
print("Workbook with chart saved.")Tam sütun grafik örneği:
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")Adım 7: Çizgi Grafiği Oluştur
Aynı desen add_line() için çalışır:
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")Yaygın Sorunlar ve Çözümler
1. Grafik boş ya da veri içermiyor
Sebep: n_series.add()‘e geçirilen veri aralığı değer içermiyor ya da hücre aralığı dizesi hatalı.
Çözüm: Hücre aralığının verilerinizle eşleştiğini doğrulayın. ws.cells["B2"].value‘nin None olmadığını kontrol edin.
2. X ekseninde kategori etiketleri görünmüyor
Cause: chart.category_data ayarlanmamış veya aralık boş hücrelere işaret ediyor.
Fix: chart.category_data = "A2:A5"‘i, A sütununda etiket dizgileriniz bulunduğu yerde ayarlayın.
3. Grafik konumu verileri çakıştırıyor
Neden: add_bar() içindeki satır sınırları veri alanıyla çakışıyor.
Çözüm: Grafiği verinin altına yerleştirin: ws.charts.add_bar(data_last_row + 2, 0, data_last_row + 18, 7).
4. AttributeError: 'ChartCollection' object has no attribute 'add'
Neden: FOSS kütüphanesi, add(ChartType.COLUMN, ...) yerine method-per-type API’si kullanıyor.
Çözüm: ws.charts.add_bar(...), ws.charts.add_line(...), ws.charts.add_pie(...) veya ws.charts.add_area(...) kullanın.
Sıkça Sorulan Sorular
Hangi grafik türleri destekleniyor?
En yaygın tipler için add_bar(), add_line(), add_pie(), add_area() ve add_stock() kullanın. Bu beş tanesi tam XML serileştirme desteğine sahiptir. Mevcut add_* yöntemlerin tam listesi için ChartCollection sınıfını kontrol edin.
Mevcut bir Excel dosyasında grafik oluşturabilir miyim?
Evet. Çalışma kitabını Workbook("existing.xlsx") ile yükleyin, hedef sayfaya erişin ve uygun ws.charts.add_*() yöntemini kullanarak bir grafik ekleyin.
Grafik başlığını nasıl ayarlarım?
Düz bir dize atayın: chart.title = "My Chart Title". .text alt özelliği yoktur: başlık kendisi dizedir.
Bu yaklaşım pandas ile uyumlu mu?
Evet. pandas DataFrame değerlerini bir döngüde hücrelere yazın, ardından bu veri aralığı üzerine bir grafik ekleyin.
İlgili Kaynaklar: