Εργασία με διαγράμματα

ΕΚΤΙΜΗΣΗ

Aspose.Cells FOSS uses a method-per-chart-type API. Instead of a generic add(ChartType.X, ...) Κάθε τύπος χάρτη έχει τη δική του αφιερωμένη μέθοδο για να Το εργαστήριο της charts Η συλλογή:

ΜέθοδοςΤύπος Χάρτης
ws.charts.add_bar(top_row, left_col, bottom_row, right_col)Κλάστρια στήλη (βάρδια χάρτη)
ws.charts.add_line(top_row, left_col, bottom_row, right_col)ΛΙΝΙΑ
ws.charts.add_pie(top_row, left_col, bottom_row, right_col)Πιέ
ws.charts.add_area(top_row, left_col, bottom_row, right_col)Περιοχή

Όλοι οι τέσσερις θέσεις περιγράφουν την ορθογώνια περιοχή στο φύλλο όπου Η γραφή θα ενσωματωθεί. ράβδοι και δείκτες στήλης είναι 0 βασισμένο.Κάθε ένας Η μέθοδος επιστρέφει σε Chart αντικείμενο που ρυθμίζετε περαιτέρω πριν αποθηκεύσετε.

Ο περιορισμός : Μόνο οι τύποι LINE, BAR, PIE, AREA και STOCK μπορούν να αποθηκευτούν στο XLSX. wb.save() με ένα βιβλίο εργασίας που περιέχει οποιοδήποτε άλλο τύπο χάρτη (π.χ., SCATTER, WATERFALL, RADAR, TREEMAP, HISTOGRAM) θα αναρτήσει NotImplementedError.


Προσθήκη χάρτη στήλης

Το παρακάτω παράδειγμα γράφει ένα μικρό σύνολο δεδομένων εισοδήματος ανά προϊόν και στη συνέχεια προσθέτει έναν πίνακα στήλης που βρίσκεται κάτω από τα δεδομένα.

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

Τα δεδομένα καταλαμβάνουν γραμμές 1—6 (σε μηδενική βάση γραμμή 0â €”5), έτσι ώστε να top_row=6 τοποθετείται η Αμέσως κάτω χωρίς να ξεπεράσετε τα δεδομένα.


Προσθήκη γραμμής χάρτη

Οι γραμμικοί χάρτες λειτουργούν καλά για να εμφανίζουν τάσεις με την πάροδο του χρόνου. η υπογραφή κλήσης είναι Ταυτόχρονα με το add_bar «Μόνο το όνομα της μέθοδος αλλάζει.

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

Τίτλος και θρύλος

Ορισμός του τίτλου του πίνακα με την αποδοχή μιας ευθείας γραμμής απευθεία στο chart.title.Η Η ιδιοκτησία αποδέχεται το str «Δεν προσπαθείτε να αποκτήσετε πρόσβαση σε υπο-υποχρέωση όπως: .title.text,που δεν υπάρχει στη βιβλιοθήκη.

##Correct
chart.title = "Quarterly Sales"

##Wrong — raises AttributeError
##chart.title.text = "Quarterly Sales"

Η ορατότητα και η θέση της θρύλου ελέγχονται από δύο ιδιότητες:

chart.show_legend = True          # display the legend
chart.legend_position = "bottom"  # "bottom", "top", "left", "right"

Για να κρύψει το θρύλο εντελώς, ορίστε chart.show_legend = Falselegend_position Η αξία αγνοείται όταν κρύβεται η θρύλος.


Επεξεργασία σειράς δεδομένων

Χρησιμοποιήστε chart.n_series.add() να προσθέσετε δεδομένα σε μια χάρτη. Pass all Τα επιχειρήματα ως Λέξεις κλειδιά Για να αποφύγετε τη σύγχυση της εντολής:

chart.n_series.add("B2:B6", category_data="A2:A6", name="Revenue")

Μπορείτε να προσθέσετε πολλαπλές σειρές σε ένα μόνο χάρτη με την κλήση n_series.add Περισσότερα Κάθε κλήση προσθέτει μια νέα σειρά:

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

Category Δεδομένα

Οι ετικέτες κατηγορίας μπορούν να ρυθμιστούν στο επίπεδο του χάρτη ή στο επιμέρους επίπεδο σειράς.

Χάρτης Επίπεδο Δεδομένα κατηγορίας Εφαρμόζεται σε όλες τις σειρές ως προεπιλογή:

chart.category_data = "A2:A5"

Σειρά-επίπεδο κατηγορία δεδομένων (Μετά την category_data Λέξεις κλειδιά για το n_series.add1) υπερβαίνει την ρύθμιση επιπέδου του χάρτη για τη συγκεκριμένη σειρά:

chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue")

Όταν κάθε σειρά μοιράζεται το ίδιο εύρος κατηγορίας, η ρύθμιση chart.category_data Όταν οι σειρές έχουν διαφορετικές κατηγορίες ράβδους ※ για παράδειγμα, δύο σύνολα δεδομένων με διαφορετικές χρονικές περιόδους — χρησιμοποιούν το επιμέρους κλειδιά λέξη επιχειρήσεων Αντί να.


Χάρτης θέσης

Οι τέσσερις παραμέτρους για κάθε add_* Η μέθοδος καθορίζει ένα όριο ορθόγλωστος στο φύλλο, μετρημένος σε μηδενική γραμμή και δείκτες στήλης:

add_bar(top_row, left_col, bottom_row, right_col)
ΠαραμέτρωνΣημασία
top_rowΟ δείκτης με βάση το μηδέν της πρώτης γραμμής που καταλαμβάνεται από τον χάρτη
left_colΔείκτης μηδενικής βάσης της αριστεράς στήλης
bottom_rowΔείκτης μηδενικής βάσης της τελευταίας σειράς που καταλαμβάνεται από τον χάρτη
right_colΔείκτης μηδενικής βάσης της δεξιάς στήλης

Ένα κοινό πρότυπο είναι να τοποθετήσετε το διάγραμμα απευθείας κάτω από τα δεδομένα. τελειώνει στην γραμμή 6 του Excel (αριθμός 5 της γραμμής με βάση το μηδέν), ξεκινάτε τον πίνακα στο 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")

Κάντε το διάγραμμα αρκετά ψηλό για να είναι αναγνωρίσιμο: ένα ύψος τουλάχιστον 15 γραμμών (bottom_row - top_ro >= 15) και ένα πλάτος τουλάχιστον 6 στήλες είναι μια λογική σημείο εκκίνησης.


Συχνές λάθη

λάθοςΔίκαιαΓιατί
ws.charts.add(ChartType.COLUMN, ...)ws.charts.add_bar(...)Μην καλείς ws.charts.add(ChartType.X, ...) άμεσα για μη υποστηριζόμενους τύπους - θα αυξηθεί NotImplementedError για 11 από 16 τύποι χάρτη. χρησιμοποιήστε add_bar(), add_line(), add_pie(), add_area()add_stock() Αντί να.
chart.title.text = "My Chart"chart.title = "My Chart"chart.title είναι μια καθαρή ιδιοκτησία, όχι ένα αντικείμενο με .text υποδιανομής .
chart.n_series.add("B2:B5", "A2:A5", "Revenue")chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue")Οι δεύτεροι και οι τρίτοι παράμετροι πρέπει να περάσουν ως λόγια-κλειδιά για να αποφευχθεί η αμφιβολία.
chart = ws.charts.add_bar(0, 0, 15, 7) (Προσωπικά δεδομένα για την Εταιρεία)Τόπος top_row κάτω από την τελευταία γραμμή δεδομένωνΈνα διάγραμμα που ξεπερνά τα δεδομένα σκοτώνει τις αξίες και προκαλεί σύγχυση στις διατάξεις.
chart.legend_position = "bottom" Χωρίς chart.show_legend = TrueΣΕΤΙΔΑ chart.show_legend = True Πρώταlegend_position Δεν έχει αποτέλεσμα όταν show_legend Είναι False.

Δείτε επίσης

 Ελληνικά