Prečo vytvárať grafy programovo?
Automatizované reportovacie pipeline často vyžadujú grafy vložené do Excelových zošitov, napríklad štvrťročné súhrny, dashboardy výsledkov strojového učenia alebo operačné metriky. Vykonať to bez Microsoft Excelu znamená žiadne licenčné náklady a žiadnu interakciu s GUI.
Aspose.Cells FOSS for Python poskytuje čisté, Pythonické API pre grafy: jedna metóda pre každý typ grafu, obyčajný reťazec pre názov a konfiguráciu sérií založenú na kľúčových argumentoch. Celé API je popísané nižšie.
Inštalácia
pip install aspose-cells-foss
Importujte triedy, ktoré potrebujete:
from aspose.cells_foss import Workbook, Cell
Grafy sa pristupuje cez ws.charts; nie je potrebné importovať samostatný modul pre grafy.
API pre grafy na prvý pohľad
| Čo chcete | Ako to urobiť |
|---|---|
| Pridať stĺpcový graf | ws.charts.add_bar(top_row, left_col, bottom_row, right_col) |
| Pridať čiarový graf | ws.charts.add_line(top_row, left_col, bottom_row, right_col) |
| Pridať pruhový graf | ws.charts.add_bar(top_row, left_col, bottom_row, right_col) |
| Pridať koláčový graf | ws.charts.add_pie(top_row, left_col, bottom_row, right_col) |
| Nastaviť názov | chart.title = "My Chart" (obyčajný reťazec; nie .title.text) |
| Nastaviť kategórie osi x | chart.category_data = "A2:A6" |
| Pridať pomenovanú sériu | chart.n_series.add("B2:B6", category_data="A2:A6", name="Revenue") |
| Zobraziť legendu | chart.show_legend = True |
| Nastaviť pozíciu legendy | chart.legend_position = "bottom" |
Všetky indexy riadkov a stĺpcov sú nulovo založený. add_* metódy vracajú Chart objekt priamo (nie index).
Stĺpcový graf: krok za krokom
Vytvorme stĺpcový graf zobrazujúci štvrťročné príjmy a výdavky.
Krok 1: Vytvorte zošit a zapíšte dáta
from aspose.cells_foss import Workbook, Cell
wb = Workbook()
ws = wb.worksheets[0]
ws.name = "Q1-Q4 Report"
##Headers
ws.cells["A1"].value = "Quarter"
ws.cells["B1"].value = "Revenue"
ws.cells["C1"].value = "Expenses"
##Data
quarters = ["Q1", "Q2", "Q3", "Q4"]
revenue = [50000, 62000, 71000, 89000]
expenses = [32000, 38000, 41000, 47000]
for i, (q, r, e) in enumerate(zip(quarters, revenue, expenses), start=2):
ws.cells[f"A{i}"].value = q
ws.cells[f"B{i}"].value = r
ws.cells[f"C{i}"].value = e
Krok 2: Pridajte graf
Umiestnite graf pod dáta (od riadku 7 ďalej, pokrývajúci stĺpce 0‑8):
chart = ws.charts.add_bar(6, 0, 22, 8)
Krok 3: Nastavte názov a legendu
chart.title = "Quarterly Revenue vs Expenses"
chart.show_legend = True
chart.legend_position = "bottom"
Krok 4: Pridať dátové série
Každá séria potrebuje rozsah hodnôt, rozsah kategórií a názov:
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")
Krok 5: Uložiť
wb.save("quarterly_report.xlsx")
print("Chart saved to quarterly_report.xlsx")
Úplný príklad v jednom bloku:
from aspose.cells_foss import Workbook, Cell
wb = Workbook()
ws = wb.worksheets[0]
ws.name = "Q1-Q4 Report"
##Data
ws.cells["A1"].value = "Quarter"
ws.cells["B1"].value = "Revenue"
ws.cells["C1"].value = "Expenses"
data = [("Q1", 50000, 32000), ("Q2", 62000, 38000),
("Q3", 71000, 41000), ("Q4", 89000, 47000)]
for i, (q, r, e) in enumerate(data, start=2):
ws.cells[f"A{i}"].value = q
ws.cells[f"B{i}"].value = r
ws.cells[f"C{i}"].value = e
chart = ws.charts.add_bar(6, 0, 22, 8)
chart.title = "Quarterly Revenue 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"
wb.save("quarterly_report.xlsx")
Čiarový graf: Mesačný trend
Rovnaký vzor funguje pre add_line():
from aspose.cells_foss import Workbook, Cell
wb = Workbook()
ws = wb.worksheets[0]
months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
actuals = [42000, 47500, 53000, 49000, 61000, 68000]
targets = [45000, 45000, 50000, 55000, 60000, 65000]
ws.cells["A1"].value = "Month"
ws.cells["B1"].value = "Actual"
ws.cells["C1"].value = "Target"
for i, (m, a, t) in enumerate(zip(months, actuals, targets), start=2):
ws.cells[f"A{i}"].value = m
ws.cells[f"B{i}"].value = a
ws.cells[f"C{i}"].value = t
chart = ws.charts.add_line(8, 0, 24, 8)
chart.title = "Monthly Revenue: Actual vs Target"
chart.category_data = "A2:A7"
chart.n_series.add("B2:B7", category_data="A2:A7", name="Actual")
chart.n_series.add("C2:C7", category_data="A2:A7", name="Target")
chart.show_legend = True
chart.legend_position = "right"
wb.save("monthly_trend.xlsx")
Koláčový graf: Trhový podiel
from aspose.cells_foss import Workbook, Cell
wb = Workbook()
ws = wb.worksheets[0]
segments = ["Product A", "Product B", "Product C", "Product D"]
shares = [40, 25, 20, 15]
ws.cells["A1"].value = "Segment"
ws.cells["B1"].value = "Share %"
for i, (s, v) in enumerate(zip(segments, shares), start=2):
ws.cells[f"A{i}"].value = s
ws.cells[f"B{i}"].value = v
chart = ws.charts.add_pie(6, 0, 20, 7)
chart.title = "Market Share by Product"
chart.category_data = "A2:A5"
chart.n_series.add("B2:B5", category_data="A2:A5", name="Share")
chart.show_legend = True
chart.legend_position = "right"
wb.save("market_share.xlsx")
Bežné chyby, ktorým sa treba vyhnúť
| Nesprávne | Správne |
|---|---|
ws.charts.add(ChartType.COLUMN, 5, 0, 15, 5) | ws.charts.add_bar(5, 0, 15, 5) |
chart.title.text = "Revenue" | chart.title = "Revenue" |
chart.n_series.add("B2:B5", True) (pozicionálny) | chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue") |
from aspose.cells.charts import ChartType | Nie je potrebné; použite ws.charts.add_bar() priamo |
chart.n_series.category_data = "A2:A5" | chart.category_data = "A2:A5" (úroveň grafu) |
Zdroje
- Aspose.Cells FOSS for Python: Installation
- Sprievodca pre vývojárov: Vytváranie grafov
- API Referencia: ChartCollection, Chart, NSeries
- Znalostná báza: Ako vytvárať grafy v Python
- Prehľad produktu: Zhrnutie funkcií a možností
- Blog: Predstavenie Aspose.Cells FOSS: Prehľad knižnice a rýchly úvod
- GitHub repozitár