Proč vytvářet grafy programově?
Automatizované reportingové pipeline často potřebují grafy vložené do sešitů Excel, například čtvrtletní souhrny, dashboardy výsledků strojového učení nebo provozní metriky. Provádět to bez Microsoft Excelu znamená nulové licenční náklady a žádnou interakci s GUI.
Aspose.Cells FOSS for Python poskytuje čisté, Pythonické API pro grafy: jedna metoda pro každý typ grafu, prostý řetězec pro název a konfiguraci řad založenou na klíčových argumentech. Celé API je popsáno níže.
Instalace
pip install aspose-cells-foss
Importujte třídy, které potřebujete:
from aspose.cells_foss import Workbook, Cell
Grafy jsou přístupné přes ws.charts; není nutné importovat samostatný modul grafu.
API grafů na první pohled
| Co chcete | Jak to udělat |
|---|---|
| Přidat sloupcový graf | ws.charts.add_bar(top_row, left_col, bottom_row, right_col) |
| Přidat čárový graf | ws.charts.add_line(top_row, left_col, bottom_row, right_col) |
| Přidat pruhový graf | ws.charts.add_bar(top_row, left_col, bottom_row, right_col) |
| Přidat koláčový graf | ws.charts.add_pie(top_row, left_col, bottom_row, right_col) |
| Nastavit název | chart.title = "My Chart" (prostý řetězec; ne .title.text) |
| Nastavit kategorie osy x | chart.category_data = "A2:A6" |
| Přidat pojmenovanou řadu | chart.n_series.add("B2:B6", category_data="A2:A6", name="Revenue") |
| Zobrazit legendu | chart.show_legend = True |
| Nastavit pozici legendy | chart.legend_position = "bottom" |
Všechny indexy řádků a sloupců jsou číslování od nuly. add_* metody vracejí Chart objekt přímo (ne index).
Sloupcový graf: krok za krokem
Vytvořme sloupcový graf zobrazující čtvrtletní příjmy a výdaje.
Krok 1: Vytvořte sešit a zapište data
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: Přidejte graf
Umístěte graf pod data (od řádku 7 dál, přes sloupce 0‑8):
chart = ws.charts.add_bar(6, 0, 22, 8)
Krok 3: Nastavte název a legendu
chart.title = "Quarterly Revenue vs Expenses"
chart.show_legend = True
chart.legend_position = "bottom"
Krok 4: Přidat datové řady
Každá řada potřebuje rozsah hodnot, rozsah kategorií a název:
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žit
wb.save("quarterly_report.xlsx")
print("Chart saved to quarterly_report.xlsx")
Úplný pří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")
Čárový graf: Měsíční trend
Stejný vzor funguje pro 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: Tržní podíl
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")
Běžné chyby, kterým se vyhnout
| Špatně | Správně |
|---|---|
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) (pozicní) | chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue") |
from aspose.cells.charts import ChartType | Není potřeba; použijte ws.charts.add_bar() přímo |
chart.n_series.category_data = "A2:A5" | chart.category_data = "A2:A5" (úroveň grafu) |
Zdroje
- Aspose.Cells FOSS for Python: Installation
- Průvodce pro vývojáře: Vytváření grafů
- API Reference: ChartCollection, Chart, NSeries
- Znalostní báze: Jak vytvářet grafy v Python
- Přehled produktu: Shrnutí funkcí a schopností
- Blog: Představení Aspose.Cells FOSS: Přehled knihovny a rychlý start
- GitHub repozitář