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él | Hogyan csináld |
|---|---|
| Oszlopdiagram hozzáadása | ws.charts.add_bar(top_row, left_col, bottom_row, right_col) |
| Vonaldiagram hozzáadása | ws.charts.add_line(top_row, left_col, bottom_row, right_col) |
| Sávdiagram hozzáadása | ws.charts.add_bar(top_row, left_col, bottom_row, right_col) |
| Kördiagram hozzáadása | ws.charts.add_pie(top_row, left_col, bottom_row, right_col) |
| A cím beállítása | chart.title = "My Chart" (egyszerű karakterlánc; nem .title.text) |
| Az x‑tengely kategóriáinak beállítása | chart.category_data = "A2:A6" |
| Megnevezett sorozat hozzáadása | chart.n_series.add("B2:B6", category_data="A2:A6", name="Revenue") |
| Jelmagyarázat megjelenítése | chart.show_legend = True |
| Jelmagyarázat pozíciójának beállítása | chart.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ás | Helyes |
|---|---|
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 ChartType | Nem 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
- Aspose.Cells FOSS for Python: Installation
- Fejlesztői útmutató: Diagramok létrehozása
- API referencia: ChartCollection, Chart, NSeries
- Tudásbázis: Hogyan hozzunk létre diagramokat a Python-ban
- Termék áttekintés: Funkciók és képességek összefoglalása
- Blog: Bemutatjuk a Aspose.Cells FOSS: Könyvtár áttekintés és gyors kezdés
- GitHub tároló