Ako vytvoriť grafy v Exceli pomocou Pythonu
Grafy prevádzajú surové údaje z tabuľkových hárkov na vizuálne poznatky. Aspose.Cells FOSS for Python vám umožňuje programovo vytvárať stĺpcové, čiarové, pruhové a koláčové grafy, s úplnou kontrolou nad dátovými sériami, popiskami kategórií, názvom grafu a jeho umiestnením, bez potreby Microsoft Excel.
Prečo vytvárať grafy s Aspose.Cells FOSS?
- Žiadny Excel nie je potrebný: Vytvárajte grafy úplne v Pythone, na akomkoľvek OS.
- API metóda-pre-typ: Použite
add_bar(),add_line(),add_pie(),add_area()a ďalšie — jedna metóda pre každý typ grafu. - Pomenované série: Konfigurujte každú sériu pomocou kľúčových argumentov
name=,category_data=. - Presné umiestnenie: Ovládajte hranice grafu pomocou súradníc buniek (top_row, left_col, bottom_row, right_col).
Krok za krokom sprievodca
Krok 1: Nainštalujte Aspose.Cells FOSS pre Python
pip install aspose-cells-fossKrok 2: Vytvorte zošit a naplňte údaje
Vytvorte nový zošit a zapíšte číselné údaje spolu s kategóriovými popiskami do buniek:
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 = 47000Krok 3: Pridať stĺpcový graf
Použite ws.charts.add_bar(top_row, left_col, bottom_row, right_col) na vloženie stĺpcového grafu. Metóda vráti objekt grafu priamo:
##Insert a column chart occupying rows 7-22, columns 0-7
chart = ws.charts.add_bar(6, 0, 22, 7)Indexy riadkov a stĺpcov sú číslované od nuly.
Krok 4: Konfigurácia dátových sérií
Pridajte každú dátovú sériu pomocou chart.n_series.add() s kľúčovými argumentmi:
##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 určuje rozsah buniek pre popisky osi x. Argument name nastavuje popis legendy série.
Krok 5: Nastavte názov grafu a údaje kategórie
Nastavte názov grafu ako obyčajný reťazec:
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"Krok 6: Uložiť zošit
workbook.save("sales_chart.xlsx")
print("Workbook with chart saved.")Kompletný príklad stĺpcového grafu:
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")Krok 7: Vytvoriť čiarový graf
Rovnaký vzor funguje pre 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")Bežné problémy a riešenia
1. Graf sa zobrazuje prázdny alebo prázdny
Cause: Rozsah údajov odovzdaný do n_series.add() neobsahuje hodnoty alebo je reťazec rozsahu buniek nesprávny.
Fix: Overte, že rozsah buniek zodpovedá vašim údajom. Skontrolujte, že ws.cells["B2"].value nie je None.
2. Popisky kategórií sa nezobrazujú na osi x
Príčina: chart.category_data nebola nastavená, alebo rozsah ukazuje na prázdne bunky.
Riešenie: Nastavte chart.category_data = "A2:A5" kde stĺpec A obsahuje vaše reťazce popiskov.
3. Pozícia grafu prekrýva údaje
Príčina: Rozmedzie riadkov v add_bar() sa prekrýva s oblasťou dát.
Oprava: Umiestnite graf pod dáta: ws.charts.add_bar(data_last_row + 2, 0, data_last_row + 18, 7).
4. AttributeError: 'ChartCollection' object has no attribute 'add'
Cause: FOSS knižnica používa API metóda‑pre‑typ, nie add(ChartType.COLUMN, ...).
Fix: Použite ws.charts.add_bar(...), ws.charts.add_line(...), ws.charts.add_pie(...) alebo ws.charts.add_area(...).
Často kladené otázky
Aké typy grafov sú podporované?
Použite add_bar(), add_line(), add_pie(), add_area() a add_stock() pre najbežnejšie typy. Týchto päť má úplnú podporu XML serializácie. Skontrolujte triedu ChartCollection pre úplný zoznam dostupných add_* metód.
Môžem vytvárať grafy v existujúcom súbore Excel?
Áno. Načítajte zošitu pomocou Workbook("existing.xlsx"), pristúpte k cieľovému hárku a pridajte graf pomocou príslušnej metódy ws.charts.add_*().
Ako nastaviť názov grafu?
Priraďte obyčajný reťazec: chart.title = "My Chart Title". Neexistuje podvlastnosť .text: názov je samotný reťazec.
Je tento prístup kompatibilný s pandas?
Áno. Zapíšte hodnoty pandas DataFrame do buniek v cykle, potom pridajte graf nad týmto rozsahom údajov.
Súvisiace zdroje: