Kāpēc izveidot diagrammas programmatiski?

Automatizētām atskaites caurulēm bieži ir vajadzīgas diagrammas, kas iekļautas Excel darblapās, piemēram, ceturkšņa kopsavilkumi, ML rezultātu informācijas paneļi vai operatīvie rādītāji. To izdarīt bez Microsoft Excel nozīmē ne licencēšanas izmaksas, ne GUI mijiedarbību.

Aspose.Cells FOSS for Python nodrošina tīru, Pythonisku diagrammu API: viena metode katram diagrammas tipam, vienkāršu virkni nosaukumam un atslēgvārdu argumentu balstītu sēriju konfigurāciju. Visa API ir aprakstīta zemāk.


Instalēt

pip install aspose-cells-foss

Importējiet vajadzīgās klases:

from aspose.cells_foss import Workbook, Cell

Diagrammas tiek piekļūtas caur ws.charts; nav nepieciešama atsevišķa diagrammu moduļa importēšana.


Diagrammu API pārskats

Ko jūs vēlatiesKā to izdarīt
Pievienot kolonnu diagrammuws.charts.add_bar(top_row, left_col, bottom_row, right_col)
Pievienot līniju diagrammuws.charts.add_line(top_row, left_col, bottom_row, right_col)
Pievienot joslu diagrammuws.charts.add_bar(top_row, left_col, bottom_row, right_col)
Pievienot sektoru diagrammuws.charts.add_pie(top_row, left_col, bottom_row, right_col)
Iestatīt nosaukumuchart.title = "My Chart" (vienkārša virkne; ne .title.text)
Iestatīt x-assas kategorijaschart.category_data = "A2:A6"
Pievienot nosauktu sērijuchart.n_series.add("B2:B6", category_data="A2:A6", name="Revenue")
Rādīt leģenduchart.show_legend = True
Iestatīt leģendas pozīcijuchart.legend_position = "bottom"

Visi rindu un kolonnas indeksi ir nulles bāzē. add_* metodes atgriež Chart objektu tieši (nevis indeksa).


Kolonu diagramma: soli pa solim

Izveidosim kolonu diagrammu, kas parāda ceturkšņa ieņēmumus un izdevumus.

1. solis: Izveidojiet darblapu un ierakstiet datus

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

2. solis: Pievienojiet diagrammu

Novietojiet diagrammu zem datiem (rinda 7 un tālāk, aptverot kolonnas 0‑8):

chart = ws.charts.add_bar(6, 0, 22, 8)

3. solis: Konfigurējiet virsrakstu un leģendu

chart.title = "Quarterly Revenue vs Expenses"
chart.show_legend = True
chart.legend_position = "bottom"

Solis 4: Pievienot datu sērijas

Katrai sērijai ir nepieciešams vērtību diapazons, kategoriju diapazons un nosaukums:

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

Solis 5: Saglabāt

wb.save("quarterly_report.xlsx")
print("Chart saved to quarterly_report.xlsx")

Pilns piemērs vienā blokā:

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

Līniju diagramma: Mēneša tendence

Tas pats paraugs darbojas ar 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")

Sektoru diagramma: Tirgus daļa

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

Biežākās kļūdas, ko jāizvairās

KļūdaPareizi
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āls)chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue")
from aspose.cells.charts import ChartTypeNav vajadzīgs; lietojiet ws.charts.add_bar() tieši
chart.n_series.category_data = "A2:A5"chart.category_data = "A2:A5" (diagrammas līmenis)

Resursi