Jak vytvořit grafy v Exceli pomocí Pythonu

Jak vytvořit grafy v Exceli pomocí Pythonu

Grafy přeměňují surové údaje z tabulky na vizuální poznatky. Aspose.Cells FOSS for Python umožňuje programově vytvářet sloupce, řádky, tyče a koláčové grafy s plnou kontrolou nad sériemi dat, štítky kategorií, názvem grafu a polohou bez nutnosti Microsoft Excel.

Proč vytvářet grafy s Aspose.Cells FOSS?

  1. Nepotřebujete Excel: Vytvořte grafy zcela v Pythonu, na jakémkoliv operačním systému.
  2. API pro jednotlivé typy metod:Použití: add_bar(), add_line(), add_pie(), add_area(), a více jedna metoda na typ grafu.
  3. Známecká série: Nastavit každou sérii s: name=, category_data= argumenty klíčových slov.
  4. Přesné umístění: Kontrolní graf je omezován souřadnicemi buněk (top_row, left_col, bottom_rows, right_Col).

Krok za krokem

Krok 1: Nainstalujte Aspose.Cells FOSS pro Python

pip install aspose-cells-foss

Krok 2: Vytvořte pracovní knihu a doplňte údaje

Vytvořte novou pracovní knihu a do buněk napište číselné údaje plus štítky kategorií:

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

Krok 3: Přidat sloupcový graf

Použití: ws.charts.add_bar(top_row, left_col, bottom_row, right_col) Metodou se vrací objekt tabulky přímo:

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

Indeksy řádků a sloupců jsou založeny na nule.


Krok 4: Konfigurovat sérii dat

Přidáme všechny data pomocí: chart.n_series.add() s argumenty klíčových slov:

##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")

Úřad pro bezpečnost a ochranu zdraví category_data argument specifikuje rozsah buněk pro označení osy x. name argument nastaví označení série legend.


Krok 5: Nastavit název a údaje o kategorii v grafu

Nastavit název grafu jako jednoduchý řetěz:

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žte pracovní knihu

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

Příklad kompletního sloupcové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: Vytvořte si linkový graf

Stejný vzor funguje pro: 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")

Obvyklé problémy a řešení

1. Chart appears blank or empty

Příčina::Rozsah údajů přenesen na: n_series.add() neobsahuje hodnoty nebo je řetězec rozsah buněk nesprávný. Opravy: Zkontrolujte, zda se rozsah mobilních telefonů shoduje s vašimi údaji. ws.cells["B2"].value není None.

2. Category labels not showing on x-axis

Příčina:: chart.category_data nebyla nastavena nebo rozsah ukazuje na prázdné buňky. Opravy:Sestava: chart.category_data = "A2:A5" kde sloupek A obsahuje řetězce označení.

3. Chart position overlaps data

Příčina::Řádek se omezí na: add_bar() překrývat se oblastí údajů. Opravy: Uložte graf pod údaje: ws.charts.add_bar(data_last_row + 2, 0, data_last_row + 18, 7).

4. AttributeError: 'ChartCollection' object has no attribute 'add'

Příčina:: Knihovna FOSS používá API pro jednotlivé typy metod, nikoli add(ChartType.COLUMN, ...). Opravy:Použití: ws.charts.add_bar(...), ws.charts.add_line(...), ws.charts.add_pie(...),nebo: ws.charts.add_area(...).


Časté otázky

Které typy grafů jsou podporovány?

Použití: add_bar(), add_line(), add_pie(), add_area(),a) add_stock() Tyto pět mají plnou podporu XML serializace. Zkontrolujte ChartCollection třída pro úplný seznam dostupných add_* metody.

Můžu vytvořit grafy v existujícím souboru Excel?

Ano, naložte si knihu s… Workbook("existing.xlsx"), přístup k cílovému listu a přidat graf pomocí příslušného ws.charts.add_*() metody.

Jak nastavit název tabulky?

Přidělit běžný řetěz: chart.title = "My Chart Title".Není tu žádná . .text podvlastnost: název je samotný řetěz.

Je tento přístup kompatibilní s pandami?

Ano. Napíšeš hodnoty databázového rámce pandy do buněk v smyčci a pak přidáš graf přes tento rozsah dat.


Související zdroje:

 Čeština