Kako stvoriti grafikone u Excelu pomoću Pythona
Grafikoni pretvaraju sirove podatke iz proračunske tablice u vizualne uvide. Aspose.Cells FOSS for Python omogućuje vam programatsko stvaranje stupčastih, linijskih, trakastih i tortnih grafikona, s potpunom kontrolom nad serijama podataka, oznakama kategorija, naslovom grafikona i položajem, bez potrebe za Microsoft Excelom.
Zašto stvarati grafikone s Aspose.Cells FOSS?
- No Excel required: Izradite grafikone u potpunosti u Pythonu, na bilo kojem OS-u.
- Method-per-type API: Koristite
add_bar(),add_line(),add_pie(),add_area()i druge — po jedna metoda po tipu grafikona. - Named series: Konfigurirajte svaku seriju s ključnim argumentima
name=,category_data=. - Precise placement: Kontrolirajte granice grafikona pomoću koordinata ćelija (top_row, left_col, bottom_row, right_col).
Vodič korak po korak
Korak 1: Instalirajte Aspose.Cells FOSS za Python
pip install aspose-cells-fossKorak 2: Stvori radnu knjigu i popuni podatke
Stvorite novu radnu knjigu i upišite numeričke podatke uz oznake kategorija u ćelije:
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 = 47000Korak 3: Dodajte stupčasti grafikon
Koristite ws.charts.add_bar(top_row, left_col, bottom_row, right_col) za umetanje stupčastog grafikona. Metoda izravno vraća objekt grafikona:
##Insert a column chart occupying rows 7-22, columns 0-7
chart = ws.charts.add_bar(6, 0, 22, 7)Indeksi redaka i stupaca su bazirani na nuli.
Korak 4: Konfiguriraj seriju podataka
Dodajte svaku seriju podataka koristeći chart.n_series.add() s ključnim argumentima:
##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")Argument category_data određuje raspon ćelija za oznake x‑osi. Argument name postavlja oznaku legende serije.
Korak 5: Postavite naslov grafikona i podatke o kategoriji
Postavite naslov grafikona kao obični string:
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"Korak 6: Spremi radnu knjigu
workbook.save("sales_chart.xlsx")
print("Workbook with chart saved.")Potpuni primjer stupčastog grafikona:
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")Korak 7: Stvori linijski grafikon
Isti uzorak radi za 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")Uobičajeni problemi i popravci
1. Grafikon se prikazuje prazan ili prazan
Cause: Područje podataka proslijeđeno n_series.add() ne sadrži vrijednosti ili je niz ćelijskog područja netočan.
Fix: Provjerite da se područje ćelija podudara s vašim podacima. Provjerite da ws.cells["B2"].value nije None.
2. Oznake kategorija ne prikazuju se na x-osi
Uzrok: chart.category_data nije postavljen, ili raspon pokazuje na prazne ćelije.
Rješenje: Postavite chart.category_data = "A2:A5" gdje stupac A sadrži vaše oznake.
3. Položaj grafikona preklapa podatke
Uzrok: Redni granice u add_bar() preklapaju se s područjem podataka.
Rješenje: Postavite grafikon ispod podataka: ws.charts.add_bar(data_last_row + 2, 0, data_last_row + 18, 7).
4. AttributeError: 'ChartCollection' object has no attribute 'add'
Uzrok: FOSS biblioteka koristi API po metodi po tipu, a ne add(ChartType.COLUMN, ...).
Popravak: Koristite ws.charts.add_bar(...), ws.charts.add_line(...), ws.charts.add_pie(...) ili ws.charts.add_area(...).
Često postavljana pitanja
Koje vrste grafikona su podržane?
Koristite add_bar(), add_line(), add_pie(), add_area() i add_stock() za najčešće vrste. Ovih pet ima potpunu podršku za XML serijalizaciju. Provjerite klasu ChartCollection za potpuni popis dostupnih add_* metoda.
Mogu li kreirati grafikone u postojećoj Excel datoteci?
Da. Učitajte radnu knjigu pomoću Workbook("existing.xlsx"), pristupite ciljanom listu i dodajte grafikon koristeći odgovarajuću ws.charts.add_*() metodu.
Kako postaviti naslov grafikona?
Dodijeli obični string: chart.title = "My Chart Title". Ne postoji pod‑svojstvo .text: naslov je sam string.
Je li ovaj pristup kompatibilan s pandasom?
Da. Zapišite vrijednosti pandas DataFrame u ćelije u petlji, a zatim dodajte grafikon nad tim rasponom podataka.
Povezani resursi: