Miért építsünk diagramokat programozottan?

Az automatizált jelentési csővezetékek gyakran igényelnek diagramokat beágyazva Excel munkafüzetekbe, például negyedéves összefoglalókat, gépi tanulás eredmény műszerfalakat vagy operatív mutatókat. Ezt Microsoft Excel nélkül elvégezve nincs licencdíj és nincs GUI interakció.

Aspose.Cells FOSS for Python tiszta, Pythonos diagram API-t biztosít: diagramtípusonként egy metódus, egyszerű karakterlánc a címhez, és kulcsszó‑argumentum alapú sorozatkonfiguráció. Az egész API alább bemutatásra kerül.


Telepítés

pip install aspose-cells-foss

Importálja a szükséges osztályokat:

from aspose.cells_foss import Workbook, Cell

A diagramok a következőn keresztül érhetők el ws.charts; nem szükséges külön diagrammodult importálni.


A diagram API egy pillantásra

Amit szeretnélHogyan csináld
Oszlopdiagram hozzáadásaws.charts.add_bar(top_row, left_col, bottom_row, right_col)
Vonaldiagram hozzáadásaws.charts.add_line(top_row, left_col, bottom_row, right_col)
Sávdiagram hozzáadásaws.charts.add_bar(top_row, left_col, bottom_row, right_col)
Kördiagram hozzáadásaws.charts.add_pie(top_row, left_col, bottom_row, right_col)
A cím beállításachart.title = "My Chart" (egyszerű karakterlánc; nem .title.text)
Az x‑tengely kategóriáinak beállításachart.category_data = "A2:A6"
Megnevezett sorozat hozzáadásachart.n_series.add("B2:B6", category_data="A2:A6", name="Revenue")
Jelmagyarázat megjelenítésechart.show_legend = True
Jelmagyarázat pozíciójának beállításachart.legend_position = "bottom"

Minden sor- és oszlopindex nulla-alapú. A add_* a metódusok visszaadják a Chart objektumot közvetlenül (nem index).


Oszlopdiagram: Lépésről lépésre

Építsünk egy oszlopdiagramot, amely a negyedéves bevételeket és kiadásokat mutatja.

1. lépés: Hozza létre a munkafüzetet és írja be az adatokat

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. lépés: Adja hozzá a diagramot

Helyezze a diagramot az adatok alá (7. sortól kezdve, 0-8 oszlopok között):

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

3. lépés: Állítsa be a címet és a jelmagyarázatot

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

4. lépés: Adatsorok hozzáadása

Minden sorozathoz szükség van egy értéktartományra, egy kategóriatartományra és egy névre:

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. lépés: Mentés

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

Teljes példa egy blokkban:

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

Vonaldiagram: Havi trend

Ugyanaz a minta működik a 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")

Kördiagram: Piaci részesedés

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

Gyakori hibák, amiket kerülni kell

HibásHelyes
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) (pozíciós)chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue")
from aspose.cells.charts import ChartTypeNem szükséges; használja ws.charts.add_bar() közvetlenül
chart.n_series.category_data = "A2:A5"chart.category_data = "A2:A5" (diagram szint)

Erőforrások