Hogyan készítsünk diagramokat Excelben Python segítségével

Hogyan készítsünk diagramokat Excelben Python segítségével

A diagramok a nyers táblázatadatokat vizuális betekintéssé alakítják. Aspose.Cells FOSS for Python lehetővé teszi, hogy programozottan oszlop-, vonal-, sáv- és kördiagramokat hozzon létre, teljes ellenőrzéssel az adat sorozatok, kategória címkék, diagram címe és pozíciója felett, anélkül, hogy a Microsoft Excelre szükség lenne.

Miért készítsünk diagramokat az Aspose.Cells FOSS-szal?

  1. No Excel required: Készítsen diagramokat teljesen Pythonban, bármely operációs rendszeren.
  2. Method-per-type API: Használja a add_bar(), add_line(), add_pie(), add_area() és továbbiakat — egy módszer diagramtípusonként.
  3. Named series: Állítsa be minden sorozatot a name=, category_data= kulcsszóargumentumokkal.
  4. Precise placement: A diagram határait cellakoordinátákkal szabályozhatja (top_row, left_col, bottom_row, right_col).

Lépésről lépésre útmutató

1. lépés: Telepítse az Aspose.Cells FOSS‑t Pythonhoz

pip install aspose-cells-foss

2. lépés: Munkafüzet létrehozása és adatok feltöltése

Hozzon létre egy új munkafüzetet, és írjon numerikus adatokat valamint kategória címkéket a cellákba:

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]
ws.name = "Sales Data"

##Category labels in column A (rows 2-5, leaving row 1 for a header)
ws.cells["A1"].value = "Quarter"
ws.cells["A2"].value = "Q1"
ws.cells["A3"].value = "Q2"
ws.cells["A4"].value = "Q3"
ws.cells["A5"].value = "Q4"

##Revenue series in column B
ws.cells["B1"].value = "Revenue"
ws.cells["B2"].value = 50000
ws.cells["B3"].value = 62000
ws.cells["B4"].value = 71000
ws.cells["B5"].value = 89000

##Expense series in column C
ws.cells["C1"].value = "Expenses"
ws.cells["C2"].value = 32000
ws.cells["C3"].value = 38000
ws.cells["C4"].value = 41000
ws.cells["C5"].value = 47000

3. lépés: Oszlopdiagram hozzáadása

Használja a ws.charts.add_bar(top_row, left_col, bottom_row, right_col) parancsot oszlopdiagram beszúrásához. A metódus közvetlenül egy diagramobjektumot ad vissza:

##Insert a column chart occupying rows 7-22, columns 0-7
chart = ws.charts.add_bar(6, 0, 22, 7)

A sor- és oszlopindexek nullától kezdődnek.


4. lépés: Adatsorok konfigurálása

Adjon hozzá minden adat sorozatot a chart.n_series.add() használatával kulcsszó argumentumokkal:

##Add Revenue series
chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue")

##Add Expenses series
chart.n_series.add("C2:C5", category_data="A2:A5", name="Expenses")

A category_data argumentum határozza meg a cellatartományt az x‑tengely címkéihez. A name argumentum állítja be a sorozat jelmagyarázat címkéjét.


5. lépés: Állítsa be a diagram címét és a kategória adatokat

Állítsa be a diagram címét egyszerű szövegként:

chart.title = "Quarterly Sales vs Expenses"
chart.category_data = "A2:A5"   # x-axis labels at chart level
chart.show_legend = True
chart.legend_position = "bottom"

6. lépés: A munkafüzet mentése

workbook.save("sales_chart.xlsx")
print("Workbook with chart saved.")

Teljes oszlopdiagram példa:

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]

##Data
labels = ["Q1", "Q2", "Q3", "Q4"]
revenue = [50000, 62000, 71000, 89000]
expenses = [32000, 38000, 41000, 47000]

ws.cells["A1"].value = "Quarter"
ws.cells["B1"].value = "Revenue"
ws.cells["C1"].value = "Expenses"

for i, (label, rev, exp) in enumerate(zip(labels, revenue, expenses), start=2):
    ws.cells[f"A{i}"].value = label
    ws.cells[f"B{i}"].value = rev
    ws.cells[f"C{i}"].value = exp

chart = ws.charts.add_bar(6, 0, 22, 7)
chart.title = "Quarterly Sales 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"

workbook.save("quarterly_chart.xlsx")

7. lépés: Vonaldiagram létrehozása

Ugyanaz a minta működik a add_line()-nél:

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]

months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
revenue = [42000, 47500, 53000, 49000, 61000, 68000]

ws.cells["A1"].value = "Month"
ws.cells["B1"].value = "Revenue"

for i, (m, r) in enumerate(zip(months, revenue), start=2):
    ws.cells[f"A{i}"].value = m
    ws.cells[f"B{i}"].value = r

chart = ws.charts.add_line(8, 0, 24, 8)
chart.title = "Monthly Revenue Trend"
chart.category_data = "A2:A7"
chart.n_series.add("B2:B7", category_data="A2:A7", name="Revenue")
chart.show_legend = True

workbook.save("trend_chart.xlsx")

Általános problémák és megoldások

1. A diagram üresnek vagy üresnek tűnik

Cause: A n_series.add()-nek átadott adat tartomány nem tartalmaz értékeket, vagy a cellatartomány karakterlánca helytelen.
Fix: Ellenőrizze, hogy a cellatartomány egyezik-e az adataival. Győződjön meg arról, hogy ws.cells["B2"].value nem None.

2. Kategória címkék nem jelennek meg az x‑tengelyen

Cause: chart.category_data nincs beállítva, vagy a tartomány üres cellákra mutat.
Fix: Állítsa be chart.category_data = "A2:A5"‑t, ahol az A oszlop tartalmazza a címke karakterláncait.

3. Diagram pozíció átfedi az adatokat

Ok: A sorhatárok add_bar() átfedik az adatmezőt.
Javítás: Helyezze a diagramot az adatok alá: ws.charts.add_bar(data_last_row + 2, 0, data_last_row + 18, 7).

4. AttributeError: 'ChartCollection' object has no attribute 'add'

Ok: A FOSS könyvtár típusonkénti metódus API-t használ, nem add(ChartType.COLUMN, ...).
Javítás: Használja a ws.charts.add_bar(...), ws.charts.add_line(...), ws.charts.add_pie(...) vagy ws.charts.add_area(...)-t.


Gyakran Ismételt Kérdések

Milyen diagramtípusok támogatottak?

Használja a add_bar(), add_line(), add_pie(), add_area() és add_stock() típusokat a leggyakoribb típusokhoz. Ezek az öt teljes XML‑szerializációs támogatással rendelkeznek. Ellenőrizze a ChartCollection osztályt a rendelkezésre álló add_* metódusok teljes listájáért.

Létrehozhatok diagramokat egy meglévő Excel-fájlban?

Igen. Töltsd be a munkafüzetet a Workbook("existing.xlsx") segítségével, lépj a cél munkalapra, és adj hozzá egy diagramot a megfelelő ws.charts.add_*() metódussal.

Hogyan állíthatom be a diagram címét?

Rendeljen egy egyszerű karakterláncot: chart.title = "My Chart Title". Nincs .text al-tulajdonság: a cím maga a karakterlánc.

Ez a megközelítés kompatibilis a pandas-szal?

Igen. Írja a pandas DataFrame értékeit cellákba egy ciklusban, majd adjon hozzá egy diagramot az adat tartományra.


Kapcsolódó források:

 Magyar