Kā izveidot diagrammas Excel ar Python

Kā izveidot diagrammas Excel ar Python

Diagrammas pārvērš neapstrādātus izklājlapas datus vizuālos ieskatos. Aspose.Cells FOSS for Python ļauj programmatiski izveidot kolonnu, līniju, joslu un sektoru diagrammas, ar pilnīgu kontroli pār datu sērijām, kategoriju etiķetēm, diagrammas nosaukumu un pozīciju, nepieprasot Microsoft Excel.

Kāpēc izveidot diagrammas ar Aspose.Cells FOSS?

  1. Nav vajadzīgs Excel: Veidojiet diagrammas pilnīgi Python, jebkurā OS.
  2. Metode-pēc-tipa API: Izmantojiet add_bar(), add_line(), add_pie(), add_area() un citus — viena metode katram diagrammas tipam.
  3. Nosauktas sērijas: Konfigurējiet katru sēriju ar name=, category_data= atslēgvārdu argumentiem.
  4. Precīza novietošana: Kontrolējiet diagrammas robežas, izmantojot šūnu koordinātas (top_row, left_col, bottom_row, right_col).

Rokasgrāmata soli pa solim

1. solis: Instalējiet Aspose.Cells FOSS priekš Python

pip install aspose-cells-foss

2. solis: Izveidot darblapu un aizpildīt datus

Izveidojiet jaunu darba grāmatu un ierakstiet skaitliskus datus plus kategoriju etiķetes šūnās:

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. solis: Pievienot kolonnas diagrammu

Izmantojiet ws.charts.add_bar(top_row, left_col, bottom_row, right_col), lai ievietotu stabiņu diagrammu. Šī metode tieši atgriež diagrammas objektu:

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

Rindas un kolonnu indeksi ir nulles bāzē.


Solis 4: Konfigurēt datu sērijas

Pievienojiet katru datu sēriju, izmantojot chart.n_series.add() ar atslēgvārdu argumentiem:

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

Argumenta category_data norāda šūnu diapazonu x‑as ass etiķetēm. Argumenta name iestata sērijas leģendas etiķeti.


Solis 5: Iestatīt diagrammas nosaukumu un kategoriju datus

Iestatiet diagrammas nosaukumu kā vienkāršu virkni:

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. solis: saglabāt darblapu

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

Pilna kolonnas diagrammas piemērs:

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. solis: Izveidot līniju diagrammu

Tas pats paraugs darbojas ar add_line():

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

Vispārējās problēmas un risinājumi

1. Diagramma izskatās tukša vai tukša

Cause: Datu diapazons, kas nodots n_series.add(), nesatur vērtības vai šūnu diapazona virkne ir nepareiza.
Fix: Pārbaudiet, vai šūnu diapazons atbilst jūsu datiem. Pārbaudiet, vai ws.cells["B2"].value nav None.

2. Kategoriju etiķetes netiek parādītas x-ass

Iemesls: chart.category_data netika iestatīts, vai diapazons norāda uz tukšām šūnām.
Risinājums: Iestatiet chart.category_data = "A2:A5", kur kolonnā A ir jūsu etiķešu virknes.

3. Diagrammas pozīcijas pārklājas ar datiem

Iemesls: Rindas robežas add_bar() pārklājas ar datu apgabalu.
Labojums: Novietojiet diagrammu zem datiem: ws.charts.add_bar(data_last_row + 2, 0, data_last_row + 18, 7).

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

Iemesls: FOSS bibliotēka izmanto metodi-pēc-tipa API, nevis add(ChartType.COLUMN, ...).
Labojums: Izmantojiet ws.charts.add_bar(...), ws.charts.add_line(...), ws.charts.add_pie(...) vai ws.charts.add_area(...).


Biežāk uzdotie jautājumi

Kuri diagrammu veidi tiek atbalstīti?

Lietojiet add_bar(), add_line(), add_pie(), add_area() un add_stock() visbiežākajām tipiem. Šīm piecām ir pilna XML serializācijas atbalsts. Pārbaudiet ChartCollection klasi, lai iegūtu pilnu pieejamo add_* metožu sarakstu.

Vai es varu izveidot diagrammas esošā Excel failā?

Jā. Ielādējiet darblapu ar Workbook("existing.xlsx"), piekļūstiet mērķa loksnei, un pievienojiet diagrammu, izmantojot atbilstošo ws.charts.add_*() metodi.

Kā es varu iestatīt diagrammas nosaukumu?

Piešķiriet vienkāršu virkni: chart.title = "My Chart Title". Nav .text apakšīpašības: nosaukums ir pati virkne.

Vai šī pieeja ir saderīga ar pandas?

Jā. Rakstiet pandas DataFrame vērtības šūnās ciklā, pēc tam pievienojiet diagrammu pār šo datu diapazonu.


Saistītie resursi:

 Latviešu