Wie man Diagramme in Excel mit Python erstellt
Diagramme verwandeln Rohdaten aus Tabellenkalkulationen in visuelle Erkenntnisse. Aspose.Cells FOSS for Python ermöglicht es Ihnen, Spalten‑, Linien‑, Balken‑ und Kreisdiagramme programmgesteuert zu erstellen, mit voller Kontrolle über Datenreihen, Kategorienbeschriftungen, Diagrammtitel und Position, ohne Microsoft Excel zu benötigen.
Warum Diagramme mit Aspose.Cells FOSS erstellen?
- No Excel required: Erstellen Sie Diagramme vollständig in Python, auf jedem Betriebssystem.
- Method-per-type API: Verwenden Sie
add_bar(),add_line(),add_pie(),add_area()und mehr — eine Methode pro Diagrammtyp. - Named series: Konfigurieren Sie jede Serie mit den Schlüsselwortargumenten
name=,category_data=. - Precise placement: Steuern Sie die Diagrammgrenzen anhand von Zellkoordinaten (top_row, left_col, bottom_row, right_col).
Schritt-für-Schritt-Anleitung
Schritt 1: Installieren Sie Aspose.Cells FOSS für Python
pip install aspose-cells-fossSchritt 2: Arbeitsmappe erstellen und Daten befüllen
Erstellen Sie eine neue Arbeitsmappe und schreiben Sie numerische Daten sowie Kategorienbezeichnungen in Zellen:
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 = 47000Schritt 3: Säulendiagramm hinzufügen
Verwenden Sie ws.charts.add_bar(top_row, left_col, bottom_row, right_col), um ein Säulendiagramm einzufügen. Die Methode gibt ein Diagrammobjekt direkt zurück:
##Insert a column chart occupying rows 7-22, columns 0-7
chart = ws.charts.add_bar(6, 0, 22, 7)Zeilen- und Spaltenindizes beginnen bei Null.
Schritt 4: Datenreihe konfigurieren
Fügen Sie jede Datenreihe mit chart.n_series.add() und Schlüsselwortargumenten hinzu:
##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")Das category_data‑Argument gibt den Zellbereich für die X‑Achsen‑Beschriftungen an. Das name‑Argument setzt die Legendenbeschriftung der Serie.
Schritt 5: Diagrammtitel und Kategoriedaten festlegen
Setzen Sie den Diagrammtitel als einfachen String:
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"Schritt 6: Arbeitsmappe speichern
workbook.save("sales_chart.xlsx")
print("Workbook with chart saved.")Komplettes Säulendiagramm-Beispiel:
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")Schritt 7: Liniendiagramm erstellen
Das gleiche Muster funktioniert für 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")Häufige Probleme und Lösungen
1. Diagramm erscheint leer oder leer
Ursache: Der an n_series.add() übergebene Datenbereich enthält keine Werte, oder die Zellbereichszeichenfolge ist ungültig.
Lösung: Überprüfen Sie, ob der Zellbereich mit Ihren Daten übereinstimmt. Stellen Sie sicher, dass ws.cells["B2"].value nicht None ist.
2. Kategorienbeschriftungen werden nicht auf der x‑Achse angezeigt
Ursache: chart.category_data war nicht gesetzt, oder der Bereich verweist auf leere Zellen.
Lösung: Setzen Sie chart.category_data = "A2:A5", wo Spalte A Ihre Beschriftungszeichenketten enthält.
3. Diagrammposition überschneidet Daten
Ursache: Die Zeilenbegrenzungen in add_bar() überschneiden den Datenbereich.
Lösung: Platzieren Sie das Diagramm unter den Daten: ws.charts.add_bar(data_last_row + 2, 0, data_last_row + 18, 7).
4. AttributeError: 'ChartCollection' object has no attribute 'add'
Ursache: Die FOSS-Bibliothek verwendet eine method-per-type-API, nicht add(ChartType.COLUMN, ...).
Lösung: Verwenden Sie ws.charts.add_bar(...), ws.charts.add_line(...), ws.charts.add_pie(...) oder ws.charts.add_area(...).
Häufig gestellte Fragen
Welche Diagrammtypen werden unterstützt?
Verwenden Sie add_bar(), add_line(), add_pie(), add_area() und add_stock() für die gebräuchlichsten Typen. Diese fünf unterstützen die vollständige XML‑Serialisierung. Überprüfen Sie die Klasse ChartCollection für die vollständige Liste der verfügbaren add_*‑Methoden.
Kann ich Diagramme in einer bestehenden Excel-Datei erstellen?
Ja. Laden Sie die Arbeitsmappe mit Workbook("existing.xlsx"), greifen Sie auf das Zielblatt zu und fügen Sie ein Diagramm mit der entsprechenden ws.charts.add_*()‑Methode hinzu.
Wie setze ich den Diagrammtitel?
Weisen Sie einen einfachen String zu: chart.title = "My Chart Title". Es gibt keine .text Untereigenschaft: Der Titel ist der String selbst.
Ist dieser Ansatz mit pandas kompatibel?
Ja. Schreiben Sie pandas DataFrame-Werte in Zellen in einer Schleife, dann fügen Sie ein Diagramm über diesem Datenbereich hinzu.
Verwandte Ressourcen: