Kodėl kurti diagramas programiškai?
Automatizuotos ataskaitų konvejeriai dažnai reikalauja diagramų, įterptų į Excel darbaknyges, pvz., ketvirčio santraukų, mašininio mokymosi rezultatų prietaisų skydelių arba operacinių metrikų. Tai atlikti be Microsoft Excel reiškia, kad nėra licencijavimo išlaidų ir nėra grafinės vartotojo sąsajos sąveikos.
Aspose.Cells FOSS for Python teikia švarią, Python‑panašią diagramų API: po vieną metodą kiekvienam diagramų tipui, paprastą eilutę pavadinimui ir raktinių argumentų pagrindu veikiančią serijų konfigūraciją. Visa API aprašyta žemiau.
Įdiegti
pip install aspose-cells-foss
Importuokite reikiamas klases:
from aspose.cells_foss import Workbook, Cell
Diagramoms prieiga vyksta per ws.charts; nereikia atskirai importuoti diagramų modulio.
Diagramų API iš pirmo žvilgsnio
| Ko norite | Kaip tai padaryti |
|---|---|
| Pridėti stulpelinę diagramą | ws.charts.add_bar(top_row, left_col, bottom_row, right_col) |
| Pridėti linijinę diagramą | ws.charts.add_line(top_row, left_col, bottom_row, right_col) |
| Pridėti juostinę diagramą | ws.charts.add_bar(top_row, left_col, bottom_row, right_col) |
| Pridėti skritulinę diagramą | ws.charts.add_pie(top_row, left_col, bottom_row, right_col) |
| Nustatyti pavadinimą | chart.title = "My Chart" (paprasta eilutė; ne .title.text) |
| Nustatyti x ašies kategorijas | chart.category_data = "A2:A6" |
| Pridėti pavadintą seriją | chart.n_series.add("B2:B6", category_data="A2:A6", name="Revenue") |
| Rodyti legendą | chart.show_legend = True |
| Nustatyti legendos poziciją | chart.legend_position = "bottom" |
Visi eilučių ir stulpelių indeksai yra nulio pagrindo. Ši add_* metodai grąžina Chart objektą tiesiogiai (ne indeksą).
Stulpelinė diagrama: Žingsnis po žingsnio
Sukurkime stulpelinę diagramą, rodantį ketvirčio pajamas ir išlaidas.
Žingsnis 1: Sukurkite darbaknygę ir įrašykite duomenis
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
Žingsnis 2: Pridėkite diagramą
Padėkite diagramą po duomenimis (nuo eilutės 7, apimant stulpelius 0‑8):
chart = ws.charts.add_bar(6, 0, 22, 8)
Žingsnis 3: Konfigūruokite pavadinimą ir legendą
chart.title = "Quarterly Revenue vs Expenses"
chart.show_legend = True
chart.legend_position = "bottom"
4 žingsnis: Pridėti duomenų serijas
Kiekvienai serijai reikia reikšmių intervalo, kategorijų intervalo ir pavadinimo:
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")
5 žingsnis: Išsaugoti
wb.save("quarterly_report.xlsx")
print("Chart saved to quarterly_report.xlsx")
Pilnas pavyzdys viename bloke:
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")
Linijinė diagrama: Mėnesinis trendas
Tas pats šablonas veikia 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")
Skritulinė diagrama: Rinkos dalis
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")
Dažnos klaidos, kurių reikia vengti
| Neteisinga | Teisinga |
|---|---|
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) (pozicinis) | chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue") |
from aspose.cells.charts import ChartType | Nereikia; naudokite ws.charts.add_bar() tiesiogiai |
chart.n_series.category_data = "A2:A5" | chart.category_data = "A2:A5" (diagramos lygis) |
Ištekliai
- Aspose.Cells FOSS for Python: Installation
- Kūrėjo vadovas: Diagramų kūrimas
- API nuoroda: ChartCollection, Chart, NSeries
- Žinių bazė: Kaip kurti diagramas su Python
- Produkto apžvalga: Savybių ir galimybių santrauka
- Tinklaraštis: Pristatome Aspose.Cells FOSS: Bibliotekos apžvalga ir greitas pradžia
- GitHub saugykla