Arbeiten mit Diagrammen
Übersicht über die
Aspose.Cells FOSS uses a method-per-chart-type API. Instead of a generic add(ChartType.X, ...) Aufruf, jeder Diagrammtyp hat seine eigene dedizierte Methode auf die Arbeitsblätter charts Sammlung:
| Verfahren | Diagrammtyp |
|---|---|
ws.charts.add_bar(top_row, left_col, bottom_row, right_col) | Klustergesteckte Spalte (Streckdiagramm) |
ws.charts.add_line(top_row, left_col, bottom_row, right_col) | Linie |
ws.charts.add_pie(top_row, left_col, bottom_row, right_col) | Torte . |
ws.charts.add_area(top_row, left_col, bottom_row, right_col) | Fläche |
Alle vier Positionsparameter beschreiben die rechteckige Fläche des Blattes, in der Die Zeilen und Spalten sind in die Tabelle eingebettet. auf Nullbasis.Jeder von uns . Die Methode gibt a zurück. Chart Objekt, das Sie vor dem Speichern weiter konfigurieren.
Beschränkung: Nur LINE, BAR, PIE, AREA und STOCK Diagramm-Typen können auf XLSX gespeichert werden. Aufrufen
wb.save()Die Datenbank wird mit einem Arbeitsbuch, das einen anderen Diagrammtyp enthält (z. B. SCATTER, WATERFALL, RADAR, TREEMAP, HISTOGRAM) angezeigt werden.NotImplementedError.
Hinzufügen eines Spaltendiagramms
Das folgende Beispiel schreibt einen kleinen Datensatz von Einnahmen nach Produkten und fügt dann eine Spaltendiagramm hinzu, die unter den Daten steht.
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
##--- Data ---
ws.cells["A1"].value = "Product"
ws.cells["B1"].value = "Revenue"
products = ["Widget A", "Widget B", "Widget C", "Widget D", "Widget E"]
revenues = [12_500, 18_200, 9_800, 21_400, 15_600]
for i, (product, revenue) in enumerate(zip(products, revenues), start=2):
ws.cells[f"A{i}"].value = product
ws.cells[f"B{i}"].value = revenue
##--- Chart (rows 7–22, columns A–H, all zero-based) ---
##top_row=6, left_col=0, bottom_row=22, right_col=7
chart = ws.charts.add_bar(6, 0, 22, 7)
chart.title = "Revenue by Product"
chart.n_series.add("B2:B6", category_data="A2:A6", name="Revenue (USD)")
chart.show_legend = True
chart.legend_position = "bottom"
workbook.save("column_chart.xlsx")
print("Saved column_chart.xlsx")Die Daten besetzen die Zeilen 1 bis 6 (Zell-basierte Zeiten 0 bis 5), so dass top_row=6 die Die Daten werden in der Tabelle unmittelbar unten ohne Überlappung ermittelt.
Hinzufügen einer Zeichentypdiagramm
Die Liniendiagramme sind gut geeignet, um Trends im Laufe der Zeit zu zeigen. identisch mit add_bar Nur der Name des Methods ändert sich.
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
##--- Monthly trend data ---
ws.cells["A1"].value = "Month"
ws.cells["B1"].value = "Page Views"
ws.cells["C1"].value = "Conversions"
months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
page_views = [4_200, 5_100, 4_800, 6_300, 7_100, 6_800]
conversions = [ 210, 255, 230, 340, 390, 360]
for i, (month, pv, cv) in enumerate(zip(months, page_views, conversions), start=2):
ws.cells[f"A{i}"].value = month
ws.cells[f"B{i}"].value = pv
ws.cells[f"C{i}"].value = cv
##--- Line chart below the data ---
chart = ws.charts.add_line(8, 0, 24, 8)
chart.title = "Monthly Website Metrics"
chart.n_series.add("B2:B7", category_data="A2:A7", name="Page Views")
chart.n_series.add("C2:C7", category_data="A2:A7", name="Conversions")
chart.show_legend = True
chart.legend_position = "bottom"
workbook.save("line_chart.xlsx")
print("Saved line_chart.xlsx")Titel und Legende der Tabelle
Setzen Sie den Diagramm-Titel, indem Sie eine einfache Zeichenfolge direkt an die chart.title.Die . Eigentum akzeptiert eine str • nicht versuchen, auf eine Unter-Eigenschaft wie .title.text, die in dieser Bibliothek nicht vorhanden ist.
##Correct
chart.title = "Quarterly Sales"
##Wrong — raises AttributeError
##chart.title.text = "Quarterly Sales"Die Sichtbarkeit und die Position der Legende werden durch zwei Eigenschaften gesteuert:
chart.show_legend = True # display the legend
chart.legend_position = "bottom" # "bottom", "top", "left", "right"Um die Legende zu verbergen, wurde ein chart.show_legend = False.Die . legend_position Der Wert wird ignoriert, wenn die Legende verborgen ist.
Datenreihenkonfiguration
Verwendung chart.n_series.add() Um Datenbereiche an ein Diagramm anzubringen. Argumente wie Schlüsselwort-Argumente Um Verwirrung hinsichtlich der Positionsreihenfolge zu vermeiden:
chart.n_series.add("B2:B6", category_data="A2:A6", name="Revenue")Sie können mehrere Serien zu einem einzelnen Diagramm hinzufügen, indem Sie aufrufen: n_series.add mehr Jeder Anruf ergänzt sich mit einer neuen Serie:
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
##Headers
ws.cells["A1"].value = "Quarter"
ws.cells["B1"].value = "North"
ws.cells["C1"].value = "South"
ws.cells["D1"].value = "East"
data = [
("Q1", 8_400, 6_100, 7_200),
("Q2", 9_200, 7_400, 8_100),
("Q3", 10_500, 8_900, 9_600),
("Q4", 11_800, 9_300, 10_200),
]
for i, row in enumerate(data, start=2):
ws.cells[f"A{i}"].value = row[0]
ws.cells[f"B{i}"].value = row[1]
ws.cells[f"C{i}"].value = row[2]
ws.cells[f"D{i}"].value = row[3]
chart = ws.charts.add_bar(6, 0, 22, 8)
chart.title = "Regional Sales by Quarter"
chart.n_series.add("B2:B5", category_data="A2:A5", name="North")
chart.n_series.add("C2:C5", category_data="A2:A5", name="South")
chart.n_series.add("D2:D5", category_data="A2:A5", name="East")
chart.show_legend = True
chart.legend_position = "bottom"
workbook.save("multi_series_chart.xlsx")
print("Saved multi_series_chart.xlsx")Kategorie-Daten
Kategorie-Etiketten können auf der Ebene des Diagramms oder auf einzelner Serien festgelegt werden.
Kategorie-Daten auf Diagrammebene gilt standardmäßig für alle Serien:
chart.category_data = "A2:A5"Daten der Kategorie auf Serienebene (über die category_data Schlüsselwort-Argument für n_series.add) überschreitet die Grafik-Ebeneinstellung für diese spezifische Reihe:
chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue")Wenn alle Serien den gleichen Kategorienabschnitt haben, wird die Einstellung “Einheitliche” verwendet. chart.category_data Wenn Serien unterschiedliche Kategorienbereiche haben, zum Beispiel:, zwei Datensätze mit unterschiedlichen Zeiträumen - verwenden Sie das Keyword-Argument pro Reihe. Stattdessen.
Kartenposition
Die vier Positionsparameter für jeden add_* Methode definiert eine Begrenzung Rechteck im Blatt, gemessen in Zeilen- und Spaltenindizes auf Nullbasis:
add_bar(top_row, left_col, bottom_row, right_col)| Parameter | Bedeutung |
|---|---|
top_row | Nullbasierter Index der ersten Zeile, die von dem Diagramm besetzt wird. |
left_col | Index auf Basis von Null der linksesten Spalte |
bottom_row | Nullbasierter Index der letzten Zeile des Diagramms |
right_col | Nullbasierter Index der rechtsesten Spalte |
Ein übliches Muster ist, die Grafik direkt unter den Daten zu platzieren. Endet in Excel Zeile 6 (Zero-basierter Zeilenindex 5), beginnt das Diagramm bei top_row=6:
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
##Data in rows 1–5 (zero-based 0–4)
labels = ["Alpha", "Beta", "Gamma", "Delta", "Epsilon"]
values = [30, 45, 28, 60, 52]
ws.cells["A1"].value = "Category"
ws.cells["B1"].value = "Score"
for i, (label, val) in enumerate(zip(labels, values), start=2):
ws.cells[f"A{i}"].value = label
ws.cells[f"B{i}"].value = val
##Data ends at zero-based row 5 (Excel row 6).
##Place chart from row 6 to row 22, columns A–H (0–7).
chart = ws.charts.add_bar(6, 0, 22, 7)
chart.title = "Category Scores"
chart.n_series.add("B2:B6", category_data="A2:A6", name="Score")
chart.show_legend = False
workbook.save("positioned_chart.xlsx")
print("Saved positioned_chart.xlsx")Die Größe des Diagramms sollte so hoch sein, dass er lesbar ist: eine Höhe von mindestens 15 Zeilen (bottom_row - top_ro >= 15) und eine Breite von wenigstens 6 Spalten sind angemessene Ausgangspunktpunkte.
Häufige Fehler
| Falsch . | - Ja . | Warum ? |
|---|---|---|
ws.charts.add(ChartType.COLUMN, ...) | ws.charts.add_bar(...) | Rufen Sie nicht an . ws.charts.add(ChartType.X, ...) direkt für nicht unterstützte Typen erhöhen wird. NotImplementedError für 11 von 16 Diagrammtypen. add_bar(), add_line(), add_pie(), add_area(),oder , add_stock() Stattdessen. |
chart.title.text = "My Chart" | chart.title = "My Chart" | chart.title ist eine einfache String-Eigenschaft, kein Objekt mit einem .text Unterbesitz. |
chart.n_series.add("B2:B5", "A2:A5", "Revenue") | chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue") | Die zweite und dritte Parameter müssen als Schlüsselwortargumente übermittelt werden, um Zweideutigkeiten zu vermeiden. |
chart = ws.charts.add_bar(0, 0, 15, 7) (Überlappungsdaten) | Ort der Veranstaltung top_row unter der letzten Datenzeile | Ein Diagramm, das Daten überschneidet, verschleiert Werte und verursacht verwirrende Layouts. |
chart.legend_position = "bottom" ohne chart.show_legend = True | Setz chart.show_legend = True Erster Schritt: | legend_position keine Wirkung hat, wenn: show_legend ist . False. |
Siehe auch:
- Referenz für die API: Vollständige Klassen- und Methodenunterlagen für die
aspose.cells_foss - Wissensbasis: Aufgabenorientierte Anleitungen zur Durchführung von Maßnahmen
- Übersicht über das Produkt: Zusammenfassung der Merkmale und Fähigkeiten
- Start / Installation: Pip-Installation und -Einrichtung
- Blog: Python Excel-Diagramm Tutorial für die Veröffentlichung von Programmen und Grafiken in der Sprache.:Schritt-für-Schritt Führung zur Erstellung von Diagrammen