Sådan opretter du diagrammer i Excel med Python
Diagrammer omdanner rå regnearksdata til visuelle indsigter. Aspose.Cells FOSS for Python lader dig oprette søjle-, linje-, bjælke- og cirkeldiagrammer programmatisk, med fuld kontrol over dataserier, kategorietiketter, diagramtitel og placering, uden at kræve Microsoft Excel.
Hvorfor oprette diagrammer med Aspose.Cells FOSS?
- Ingen Excel påkrævet: Byg diagrammer udelukkende i Python, på ethvert OS.
- Metode-per-type API: Brug
add_bar(),add_line(),add_pie(),add_area()og flere — én metode pr. diagramtype. - Navngivne serier: Konfigurer hver serie med
name=,category_data=nøgleordargumenter. - Præcis placering: Kontroller diagramgrænser ved cellekoordinater (top_row, left_col, bottom_row, right_col).
Trin-for-trin guide
Trin 1: Installer Aspose.Cells FOSS for Python
pip install aspose-cells-fossTrin 2: Opret en projektmappe og udfyld data
Opret en ny projektmappe og skriv numeriske data plus kategorietiketter til celler:
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 = 47000Trin 3: Tilføj et søjlediagram
Brug ws.charts.add_bar(top_row, left_col, bottom_row, right_col) til at indsætte et søjlediagram. Metoden returnerer et diagramobjekt direkte:
##Insert a column chart occupying rows 7-22, columns 0-7
chart = ws.charts.add_bar(6, 0, 22, 7)Række- og kolonneindekser er nulbaserede.
Trin 4: Konfigurer dataserier
Tilføj hver dataserie ved hjælp af chart.n_series.add() med nøgleordargumenter:
##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")Argumentet category_data specificerer celleområdet for x‑akseetiketterne. Argumentet name angiver serielegendens etiket.
Trin 5: Indstil diagramtitel og kategoridata
Indstil diagramtitlen som en ren streng:
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"Trin 6: Gem projektmappe
workbook.save("sales_chart.xlsx")
print("Workbook with chart saved.")Komplet søjlediagram eksempel:
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")Trin 7: Opret et linjediagram
Det samme mønster virker for 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")Almindelige problemer og løsninger
1. Diagrammet vises tomt eller er tomt
Årsag: Det dataområde, der er sendt til n_series.add(), indeholder ingen værdier, eller celleområde‑strengen er forkert.
Løsning: Bekræft at celleområdet svarer til dine data. Kontroller at ws.cells["B2"].value ikke er None.
2. Kategorietiketter vises ikke på x-aksen
Årsag: chart.category_data var ikke indstillet, eller området peger på tomme celler.
Løsning: Indstil chart.category_data = "A2:A5" hvor kolonne A indeholder dine etiketstrenge.
3. Diagramposition overlapper data
Årsag: Rækkegrænserne i add_bar() overlapper dataområdet.
Løsning: Placér diagrammet under dataene: ws.charts.add_bar(data_last_row + 2, 0, data_last_row + 18, 7).
4. AttributeError: 'ChartCollection' object has no attribute 'add'
Årsag: FOSS-biblioteket bruger metode-per-type API, ikke add(ChartType.COLUMN, ...).
Løsning: Brug ws.charts.add_bar(...), ws.charts.add_line(...), ws.charts.add_pie(...) eller ws.charts.add_area(...).
Ofte stillede spørgsmål
Hvilke diagramtyper understøttes?
Brug add_bar(), add_line(), add_pie(), add_area() og add_stock() til de mest almindelige typer. Disse fem har fuld XML-serialiseringsunderstøttelse. Tjek ChartCollection-klassen for den komplette liste over tilgængelige add_*-metoder.
Kan jeg oprette diagrammer i en eksisterende Excel‑fil?
Ja. Indlæs arbejdsbogen med Workbook("existing.xlsx"), få adgang til målarket, og tilføj et diagram ved hjælp af den passende ws.charts.add_*() metode.
Hvordan indstiller jeg diagramtitlen?
Tildel en simpel streng: chart.title = "My Chart Title". Der er ingen .text underegenskab: titlen er selve strengen.
Er denne tilgang kompatibel med pandas?
Ja. Skriv pandas DataFrame‑værdier til celler i en løkke, og tilføj derefter et diagram over det dataområde.
Relaterede ressourcer: