Kako napraviti grafikone u Excelu pomoću Pythona

Kako napraviti grafikone u Excelu pomoću Pythona

Grafikoni pretvaraju sirove podatke iz tabela u vizuelne uvide. Aspose.Cells FOSS for Python vam omogućava da programatski kreirate stubičaste, linijske, trake i pita grafikone, uz potpunu kontrolu nad serijama podataka, oznakama kategorija, naslovom grafikona i položajem, bez potrebe za Microsoft Excel-om.

Zašto kreirati grafikone uz Aspose.Cells FOSS?

  1. Nije potreban Excel: Kreirajte grafikone u potpunosti u Pythonu, na bilo kom OS‑u.
  2. API po metodi za tip: Koristite add_bar(), add_line(), add_pie(), add_area(), i još — po jedna metoda po tipu grafikona.
  3. Imenovane serije: Konfigurišite svaku seriju pomoću ključnih argumenata name=, category_data=.
  4. Precizno postavljanje: Kontrolišite 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-foss

Korak 2: Kreirajte Workbook i popunite podatke

Kreirajte novi radni list i upišite numeričke podatke plus 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 = 47000

Korak 3: Dodajte stubičasti grafikon

Koristite ws.charts.add_bar(top_row, left_col, bottom_row, right_col) da umetnete stubičasti grafikon. Metoda direktno vraća objekat grafikona:

##Insert a column chart occupying rows 7-22, columns 0-7
chart = ws.charts.add_bar(6, 0, 22, 7)

Indeksi redova i kolona počinju od nule.


Korak 4: Konfigurišite seriju podataka

Dodajte svaku seriju podataka koristeći chart.n_series.add() sa 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 opseg ćelija za oznake x‑ose. Argument name postavlja oznaku legende serije.


Korak 5: Postavite naslov grafikona i podatke o kategorijama

Postavite naslov grafikona kao običan 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: Sačuvajte radnu svesku

workbook.save("sales_chart.xlsx")
print("Workbook with chart saved.")

Potpuni primer stubič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: Kreirajte linijski grafikon

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

Уобичајени проблеми и решења

1. Grafikon se prikazuje prazan ili bez podataka

Uzrok: Opseg podataka prosleđen n_series.add() ne sadrži vrednosti, ili je string opsega ćelija netačan.
Rešenje: Proverite da opseg ćelija odgovara vašim podacima. Proverite da ws.cells["B2"].value nije None.

2. Oznake kategorija se ne prikazuju na x-osi

Uzrok: chart.category_data nije postavljen, ili opseg pokazuje na prazne ćelije.
Rešenje: Postavite chart.category_data = "A2:A5" gde kolona A sadrži vaše stringove oznaka.

3. Pozicija grafikona preklapa podatke

Cause: Granice reda u add_bar() preklapaju se sa područjem podataka.
Fix: 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 metod‑po‑tipu, a ne add(ChartType.COLUMN, ...).
Rešenje: Koristite ws.charts.add_bar(...), ws.charts.add_line(...), ws.charts.add_pie(...) ili ws.charts.add_area(...).


Često postavljana pitanja

Koji tipovi grafikona su podržani?

Koristite add_bar(), add_line(), add_pie(), add_area() i add_stock() za najčešće tipove. Ovih pet ima potpunu podršku za XML serijalizaciju. Proverite klasu ChartCollection za potpuni spisak dostupnih add_* metoda.

Могу ли да креирам графике у постојећој Excel датотеци?

Да. Учитајте радну књигу помоћу Workbook("existing.xlsx"), приступите циљном листу и додајте график користећи одговарајућу ws.charts.add_*() методу.

Kako da postavim naslov grafikona?

Dodeli običan string: chart.title = "My Chart Title". Ne postoji .text pod‑svojstvo: naslov je sam string.

Da li je ovaj pristup kompatibilan sa pandas-om?

Да. Запишите вредности pandas DataFrame у ћелије у петљи, а затим додајте графикон над тим опсегом података.


Povezani resursi:

 Српски