Grafikleriyle Çalışma
Genel Bakış
Aspose.Cells FOSS uses a method-per-chart-type API. Instead of a generic add(ChartType.X, ...) çağrıldığında, her grafik türünün kendine özgü bir yöntemi vardır çalışma sayfasının charts koleksiyon:
| Yöntem | Grafik türü |
|---|---|
ws.charts.add_bar(top_row, left_col, bottom_row, right_col) | Kümelenmiş sütun (çubuk grafik) |
ws.charts.add_line(top_row, left_col, bottom_row, right_col) | Çizgi |
ws.charts.add_pie(top_row, left_col, bottom_row, right_col) | Pasta |
ws.charts.add_area(top_row, left_col, bottom_row, right_col) | Alan |
Dört konumsal parametrenin tamamı, sayfada bulunduğu dikdörtgen alanı tanımlar grafik gömülecek. Satır ve sütun indeksleri sıfır tabanlı. Her yöntem döndürür Chart nesne, kaydetmeden önce daha fazla yapılandırabilirsiniz.
Sınırlama: Yalnızca LINE, BAR, PIE, AREA ve STOCK grafik türleri XLSX’e kaydedilebilir. Çağırma wb.save() bir çalışma kitabı içinde başka bir grafik türü (ör. SCATTER, WATERFALL, RADAR, TREEMAP, HISTOGRAM) bulunduğunda hata oluşturur NotImplementedError.
Sütun Grafiği Ekleme
Aşağıdaki örnek, ürün bazında küçük bir gelir veri kümesi yazar ve ardından verinin altına konumlandırılmış bir sütun grafiği ekler.
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
##--- Data ---
ws.cells["A1"].value = "Product"
ws.cells["B1"].value = "Revenue"
products = ["Widget A", "Widget B", "Widget C", "Widget D", "Widget E"]
revenues = [12_500, 18_200, 9_800, 21_400, 15_600]
for i, (product, revenue) in enumerate(zip(products, revenues), start=2):
ws.cells[f"A{i}"].value = product
ws.cells[f"B{i}"].value = revenue
##--- Chart (rows 7–22, columns A–H, all zero-based) ---
##top_row=6, left_col=0, bottom_row=22, right_col=7
chart = ws.charts.add_bar(6, 0, 22, 7)
chart.title = "Revenue by Product"
chart.n_series.add("B2:B6", category_data="A2:A6", name="Revenue (USD)")
chart.show_legend = True
chart.legend_position = "bottom"
workbook.save("column_chart.xlsx")
print("Saved column_chart.xlsx")Veri, 1–6 satırlarını (sıfır tabanlı satırlar 0–5) kaplar, bu yüzden top_row=6 yerleştirir verileri üst üste bindirmeden hemen altındaki grafiği.
Çizgi Grafiği Ekleme
Çizgi grafikler, zaman içindeki eğilimleri göstermek için iyidir. Çağrı imzası şudur aynıdır add_bar — sadece yöntem adı değişir.
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
##--- Monthly trend data ---
ws.cells["A1"].value = "Month"
ws.cells["B1"].value = "Page Views"
ws.cells["C1"].value = "Conversions"
months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
page_views = [4_200, 5_100, 4_800, 6_300, 7_100, 6_800]
conversions = [ 210, 255, 230, 340, 390, 360]
for i, (month, pv, cv) in enumerate(zip(months, page_views, conversions), start=2):
ws.cells[f"A{i}"].value = month
ws.cells[f"B{i}"].value = pv
ws.cells[f"C{i}"].value = cv
##--- Line chart below the data ---
chart = ws.charts.add_line(8, 0, 24, 8)
chart.title = "Monthly Website Metrics"
chart.n_series.add("B2:B7", category_data="A2:A7", name="Page Views")
chart.n_series.add("C2:C7", category_data="A2:A7", name="Conversions")
chart.show_legend = True
chart.legend_position = "bottom"
workbook.save("line_chart.xlsx")
print("Saved line_chart.xlsx")Grafik Başlığı ve Açıklama
Grafik başlığını, doğrudan bir düz dize atayarak ayarlayın chart.title. Bu özellik bir str — bir alt-özelliğe, örneğin, erişmeye çalışmayın .title.text, bu kütüphanede mevcut değildir.
##Correct
chart.title = "Quarterly Sales"
##Wrong — raises AttributeError
##chart.title.text = "Quarterly Sales"Açıklama görünürlüğü ve konumu iki özellik tarafından kontrol edilir:
chart.show_legend = True # display the legend
chart.legend_position = "bottom" # "bottom", "top", "left", "right"Efsaneyi tamamen gizlemek için, ayarlayın chart.show_legend = False. Bu legend_position değer, efsane gizlendiğinde yok sayılır.
Veri Serisi Yapılandırması
Kullanın chart.n_series.add() veri aralıklarını bir grafiğe eklemek için. Tüm argümanları olarak anahtar kelime argümanları konumsal sıralama karışıklığını önlemek için:
chart.n_series.add("B2:B6", category_data="A2:A6", name="Revenue")Tek bir grafiğe birden fazla seriyi çağırarak ekleyebilirsiniz n_series.add daha fazla bir kereden fazla. Her çağrı yeni bir seri ekler:
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
##Headers
ws.cells["A1"].value = "Quarter"
ws.cells["B1"].value = "North"
ws.cells["C1"].value = "South"
ws.cells["D1"].value = "East"
data = [
("Q1", 8_400, 6_100, 7_200),
("Q2", 9_200, 7_400, 8_100),
("Q3", 10_500, 8_900, 9_600),
("Q4", 11_800, 9_300, 10_200),
]
for i, row in enumerate(data, start=2):
ws.cells[f"A{i}"].value = row[0]
ws.cells[f"B{i}"].value = row[1]
ws.cells[f"C{i}"].value = row[2]
ws.cells[f"D{i}"].value = row[3]
chart = ws.charts.add_bar(6, 0, 22, 8)
chart.title = "Regional Sales by Quarter"
chart.n_series.add("B2:B5", category_data="A2:A5", name="North")
chart.n_series.add("C2:C5", category_data="A2:A5", name="South")
chart.n_series.add("D2:D5", category_data="A2:A5", name="East")
chart.show_legend = True
chart.legend_position = "bottom"
workbook.save("multi_series_chart.xlsx")
print("Saved multi_series_chart.xlsx")Kategori Verisi
Kategori etiketleri, grafik seviyesinde veya bireysel seri seviyesinde ayarlanabilir.
Grafik düzeyinde kategori verileri tüm serilere varsayılan olarak uygulanır:
chart.category_data = "A2:A5"Seri düzeyinde kategori verileri (şu aracılığıyla category_data anahtar kelime argümanı n_series.add) belirli seri için grafik düzeyindeki ayarı geçersiz kılar:
chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue")Her seri aynı kategori aralığını paylaştığında, ayarlamak chart.category_data bir kez daha özlüdür. Serilerin farklı kategori aralıkları olduğunda — örneğin, farklı zaman dilimlerine sahip iki veri kümesi — per-seri anahtar kelime argümanını kullanın bunun yerine.
Grafik Konumlandırması
Her birine dört konumsal parametre add_* yöntem, bir sınırlayıcı sayfada bir dikdörtgen tanımlar; sıfır tabanlı satır ve sütun indeksleriyle ölçülür:
add_bar(top_row, left_col, bottom_row, right_col)| Parametre | Anlamı |
|---|---|
top_row | Grafiğin kapladığı ilk satırın sıfır tabanlı indeksi |
left_col | En sol sütunun sıfır tabanlı indeksi |
bottom_row | Grafiğin işgal ettiği son satırın sıfır tabanlı indeksi |
right_col | En sağ sütunun sıfır tabanlı indeksi |
Yaygın bir desen, grafiği doğrudan verilerin altına yerleştirmektir. Eğer verileriniz Excel satırı 6’da (sıfır tabanlı satır indeksi 5) sona erer, grafiği şuradan başlatın top_row=6:
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
##Data in rows 1–5 (zero-based 0–4)
labels = ["Alpha", "Beta", "Gamma", "Delta", "Epsilon"]
values = [30, 45, 28, 60, 52]
ws.cells["A1"].value = "Category"
ws.cells["B1"].value = "Score"
for i, (label, val) in enumerate(zip(labels, values), start=2):
ws.cells[f"A{i}"].value = label
ws.cells[f"B{i}"].value = val
##Data ends at zero-based row 5 (Excel row 6).
##Place chart from row 6 to row 22, columns A–H (0–7).
chart = ws.charts.add_bar(6, 0, 22, 7)
chart.title = "Category Scores"
chart.n_series.add("B2:B6", category_data="A2:A6", name="Score")
chart.show_legend = False
workbook.save("positioned_chart.xlsx")
print("Saved positioned_chart.xlsx")Grafiği okunabilir olacak kadar yüksek yapın: en az 15 satır yüksekliğinde (bottom_row - top_row >= 15) ve en az 6 sütun genişliğinde bir boyut, makul bir başlangıç noktasıdır.
Yaygın Hatalar
| Yanlış | Doğru | Neden |
|---|---|---|
ws.charts.add(ChartType.COLUMN, ...) | ws.charts.add_bar(...) | Çağırmayın ws.charts.add(ChartType.X, ...) desteklenmeyen tipler için doğrudan — bir hata fırlatır NotImplementedError 16 grafik tipinden 11’i için. Kullan add_bar(), add_line(), add_pie(), add_area(), ya da add_stock() yerine. |
chart.title.text = "My Chart" | chart.title = "My Chart" | chart.title düz bir string özelliğidir, bir nesneyle .text alt özelliği. |
chart.n_series.add("B2:B5", "A2:A5", "Revenue") | chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue") | İkinci ve üçüncü parametreler, belirsizliği önlemek için anahtar kelime argümanları olarak geçirilmelidir. |
chart = ws.charts.add_bar(0, 0, 15, 7) (verileri üst üste bindirir) | Yerleştir top_row son veri satırının altında | Verileri üst üste bindiren bir grafik, değerleri gizler ve kafa karıştırıcı düzenlere neden olur. |
chart.legend_position = "bottom" olmadan chart.show_legend = True | Ayarla chart.show_legend = True ilk | legend_position olduğunda etkisi yoktur show_legend dır False. |
Ayrıca Bakınız
- API Referansı: Tam sınıf ve yöntem belgeleri için
aspose.cells_foss - Bilgi Tabanı: Göreve yönelik nasıl yapılır kılavuzları
- Ürün Genel Bakışı: Özellikler ve yeteneklerin özeti
- Başlarken / Kurulum: pip kurulum ve ayar
- Blog: Python Excel Grafik Öğreticisi: Adım adım grafik oluşturma kılavuzu