Kaip sukurti diagramas Excel programoje naudojant Python
Diagramos paverčia neapdorotus skaičiuoklės duomenis į vizualias įžvalgas. Aspose.Cells FOSS for Python leidžia programiškai kurti stulpelių, linijinių, juostinių ir skritulinės diagramos, suteikdama visišką kontrolę duomenų serijoms, kategorijų etiketėms, diagramos pavadinimui ir pozicijai, nereikalaujant Microsoft Excel.
Kodėl kurti diagramas su Aspose.Cells FOSS?
- Nereikia Excel: Kurkite diagramas visiškai Python kalba, bet kurioje operacinėje sistemoje.
- Method-per-type API: Naudokite
add_bar(),add_line(),add_pie(),add_area()ir kt. – po vieną metodą kiekvienam diagramos tipui. - Pavadintos serijos: Konfigūruokite kiekvieną seriją naudodami
name=,category_data=raktinius argumentus. - Tikslus išdėstymas: Valdykite diagramos ribas pagal langelių koordinates (top_row, left_col, bottom_row, right_col).
Žingsnis po žingsnio vadovas
Žingsnis 1: Įdiekite Aspose.Cells FOSS for Python
pip install aspose-cells-fossŽingsnis 2: Sukurkite darbaknygę ir įkelkite duomenis
Sukurkite naują darbaknygę ir įrašykite skaitinius duomenis bei kategorijos etiketes į langelius:
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Žingsnis 3: Pridėti stulpelinę diagramą
Naudokite ws.charts.add_bar(top_row, left_col, bottom_row, right_col), kad įterptumėte stulpelinę diagramą. Šis metodas tiesiogiai grąžina diagramų objektą:
##Insert a column chart occupying rows 7-22, columns 0-7
chart = ws.charts.add_bar(6, 0, 22, 7)Eilutės ir stulpelio indeksai prasideda nuo nulio.
Žingsnis 4: Konfigūruoti duomenų serijas
Pridėkite kiekvieną duomenų seriją naudodami chart.n_series.add() su raktiniais argumentais:
##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")category_data argumentas nurodo langelių diapazoną x ašies etiketėms. name argumentas nustato serijos legendos etiketę.
5 žingsnis: Nustatykite diagramos pavadinimą ir kategorijos duomenis
Nustatykite diagramos pavadinimą kaip paprastą eilutę:
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"Žingsnis 6: Išsaugoti darbo knygą
workbook.save("sales_chart.xlsx")
print("Workbook with chart saved.")Pilnas stulpelinės diagramos pavyzdys:
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")Žingsnis 7: Sukurti linijinę diagramą
Tas pats šablonas veikia su 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")Įprastos problemos ir sprendimai
1. Diagrama rodo tuščią arba tuščią
Cause: Duomenų diapazonas, perduotas n_series.add(), neturi reikšmių arba langelių diapazono eilutė yra neteisinga.
Fix: Patikrinkite, ar langelių diapazonas atitinka jūsų duomenis. Įsitikinkite, kad ws.cells["B2"].value nėra None.
2. Kategorijų etiketės nerodomos x ašyje
Cause: chart.category_data nebuvo nustatytas, arba diapazonas rodo į tuščius langelius.
Fix: Nustatykite chart.category_data = "A2:A5", kur stulpelyje A yra jūsų etikečių eilutės.
3. Diagramos pozicija persidengia su duomenimis
Priežastis: Eilučių ribos add_bar() persidengia su duomenų sritimi.
Sprendimas: Įdėkite diagramą po duomenimis: ws.charts.add_bar(data_last_row + 2, 0, data_last_row + 18, 7).
4. AttributeError: 'ChartCollection' object has no attribute 'add'
Priežastis: FOSS biblioteka naudoja metodą‑už‑tipą API, o ne add(ChartType.COLUMN, ...).
Sprendimas: Naudokite ws.charts.add_bar(...), ws.charts.add_line(...), ws.charts.add_pie(...) arba ws.charts.add_area(...).
Dažnai užduodami klausimai
Kokie diagramos tipai palaikomi?
Naudokite add_bar(), add_line(), add_pie(), add_area() ir add_stock() dažniausiai pasitaikančioms tipams. Šie penki turi pilną XML serializacijos palaikymą. Patikrinkite ChartCollection klasę, kad gautumėte visą galimų add_* metodų sąrašą.
Ar galiu kurti diagramas esamame Excel faile?
Taip. Įkelkite darbaknygę naudodami Workbook("existing.xlsx"), pasiekite tikslinį lapą ir pridėkite diagramą naudodami tinkamą ws.charts.add_*() metodą.
Kaip nustatyti diagramos pavadinimą?
Priskirkite paprastą eilutę: chart.title = "My Chart Title". Nėra .text sub‑savybės: pavadinimas yra pati eilutė.
Ar šis požiūris suderinamas su pandas?
Taip. Įrašykite pandas DataFrame reikšmes į langelius cikle, tada pridėkite diagramą virš šio duomenų intervalo.
Susiję ištekliai: