Πώς να δημιουργήσετε διαγράμματα στο Excel με Python
Τα διαγράμματα μετατρέπουν τα ακατέργαστα δεδομένα λογιστικού φύλλου σε οπτικές πληροφορίες. Aspose.Cells FOSS for Python σας επιτρέπει να δημιουργείτε στήλες, γραμμές, ράβδους και πίτες διαγράμματα προγραμματιστικά, με πλήρη έλεγχο πάνω στις σειρές δεδομένων, τις ετικέτες κατηγοριών, τον τίτλο του διαγράμματος και τη θέση, χωρίς να απαιτείται το Microsoft Excel.
Γιατί να δημιουργείτε διαγράμματα με Aspose.Cells FOSS;
- Δεν απαιτείται Excel: Δημιουργήστε διαγράμματα εξ ολοκλήρου σε Python, σε οποιοδήποτε OS.
- API μέθοδος‑ανά‑τύπο: Χρησιμοποιήστε
add_bar(),add_line(),add_pie(),add_area(), και άλλα — μία μέθοδος ανά τύπο διαγράμματος. - Ονομασμένες σειρές: Διαμορφώστε κάθε σειρά με τα ορίσματα‑λέξεις‑κλειδιά
name=,category_data=. - Ακριβής τοποθέτηση: Ελέγξτε τα όρια του διαγράμματος με συντεταγμένες κελιών (top_row, left_col, bottom_row, right_col).
Οδηγός βήμα προς βήμα
Βήμα 1: Εγκατάσταση Aspose.Cells FOSS για Python
pip install aspose-cells-fossΒήμα 2: Δημιουργία Φύλλου Εργασίας και Συμπλήρωση Δεδομένων
Δημιουργήστε ένα νέο βιβλίο εργασίας και γράψτε αριθμητικά δεδομένα μαζί με ετικέτες κατηγοριών στα κελιά:
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Βήμα 3: Προσθήκη γραφήματος στήλης
Χρησιμοποιήστε ws.charts.add_bar(top_row, left_col, bottom_row, right_col) για να εισάγετε ένα γράφημα στήλης. Η μέθοδος επιστρέφει άμεσα ένα αντικείμενο γραφήματος:
##Insert a column chart occupying rows 7-22, columns 0-7
chart = ws.charts.add_bar(6, 0, 22, 7)Οι δείκτες γραμμής και στήλης είναι μηδενικής βάσης.
Βήμα 4: Διαμόρφωση σειράς δεδομένων
Προσθέστε κάθε σειρά δεδομένων χρησιμοποιώντας chart.n_series.add() με ορίσματα λέξεων‑κλειδιών:
##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 καθορίζει την περιοχή κελιών για τις ετικέτες του άξονα x. Το όρισμα name ορίζει την ετικέτα του υπομνήματος σειράς.
Βήμα 5: Ορίστε τον τίτλο του διαγράμματος και τα δεδομένα κατηγορίας
Ορίστε τον τίτλο του διαγράμματος ως απλό κείμενο:
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"Βήμα 6: Αποθήκευση του Φύλλου Εργασίας
workbook.save("sales_chart.xlsx")
print("Workbook with chart saved.")Παράδειγμα πλήρους ραβδίου γραφήματος:
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")Βήμα 7: Δημιουργία γραφήματος γραμμής
Το ίδιο μοτίβο λειτουργεί για 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")Κοινά Προβλήματα και Διορθώσεις
1. Το γράφημα εμφανίζεται κενό ή άδειο
Cause: Η περιοχή δεδομένων που μεταβιβάστηκε στο n_series.add() δεν περιέχει τιμές ή η συμβολοσειρά περιοχής κελιών είναι εσφαλμένη.
Fix: Επαληθεύστε ότι η περιοχή κελιών ταιριάζει με τα δεδομένα σας. Ελέγξτε ότι το ws.cells["B2"].value δεν είναι None.
2. Οι ετικέτες κατηγοριών δεν εμφανίζονται στον άξονα x
Αιτία: chart.category_data δεν έχει οριστεί ή η περιοχή δείχνει σε κενά κελιά.
Διόρθωση: Ορίστε chart.category_data = "A2:A5" όπου η στήλη A περιέχει τις συμβολοσειρές ετικετών σας.
3. Η θέση του διαγράμματος επικαλύπτει τα δεδομένα
Αιτία: Τα όρια της γραμμής στο add_bar() επικαλύπτονται με την περιοχή δεδομένων.
Διόρθωση: Τοποθετήστε το διάγραμμα κάτω από τα δεδομένα: ws.charts.add_bar(data_last_row + 2, 0, data_last_row + 18, 7).
4. AttributeError: 'ChartCollection' object has no attribute 'add'
Αιτία: Η βιβλιοθήκη FOSS χρησιμοποιεί API με μέθοδο ανά τύπο, όχι add(ChartType.COLUMN, ...).
Διόρθωση: Χρησιμοποιήστε ws.charts.add_bar(...), ws.charts.add_line(...), ws.charts.add_pie(...) ή ws.charts.add_area(...).
Συχνές Ερωτήσεις
Ποιοι τύποι διαγραμμάτων υποστηρίζονται;
Χρησιμοποιήστε add_bar(), add_line(), add_pie(), add_area() και add_stock() για τους πιο συνηθισμένους τύπους. Αυτά τα πέντε έχουν πλήρη υποστήριξη XML σειριοποίησης. Ελέγξτε την κλάση ChartCollection για τη πλήρη λίστα των διαθέσιμων add_* μεθόδων.
Μπορώ να δημιουργήσω διαγράμματα σε υπάρχον αρχείο Excel;
Ναι. Φορτώστε το βιβλίο εργασίας με Workbook("existing.xlsx"), αποκτήστε πρόσβαση στο φύλλο‑στόχο και προσθέστε ένα γράφημα χρησιμοποιώντας τη σχετική ws.charts.add_*() μέθοδο.
Πώς ορίζω τον τίτλο του διαγράμματος;
Αναθέστε μια απλή συμβολοσειρά: chart.title = "My Chart Title". Δεν υπάρχει υπο‑ιδιότητα .text: ο τίτλος είναι η ίδια η συμβολοσειρά.
Είναι αυτή η προσέγγιση συμβατή με το pandas;
Ναι. Γράψτε τις τιμές του pandas DataFrame σε κελιά σε βρόχο, στη συνέχεια προσθέστε ένα γράφημα πάνω σε αυτό το εύρος δεδομένων.
Σχετικοί Πόροι: