איך ליצור תרשימים באקסל עם פייתון

איך ליצור תרשימים באקסל עם פייתון

תרשימים ממירים נתוני גיליון אלקטרוני גולמיים לתובנות חזותיות. Aspose.Cells FOSS for Python מאפשר ליצור תרשימי עמודות, קו, פסים ועוגה באופן תכנותי, עם שליטה מלאה בסדרות הנתונים, בתוויות הקטגוריות, בכותרת התרשים ובמיקום, ללא צורך ב-Microsoft Excel.

למה ליצור תרשימים עם Aspose.Cells FOSS?

  1. אין צורך ב-Excel: בנה תרשימים באופן מלא ב-Python, על כל מערכת הפעלה.
  2. API של שיטה לכל סוג: השתמש בadd_bar(), add_line(), add_pie(), add_area(), ועוד — שיטה אחת לכל סוג תרשים.
  3. סדרות בשם: הגדר כל סדרה עם ארגומנטים מילוליים name=, category_data=.
  4. מיקום מדויק: שלוט בגבולות התרשים באמצעות קואורדינטות תאים (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. התרשים מופיע ריק או ריק

סיבה: טווח הנתונים שהועבר לn_series.add() אינו מכיל ערכים, או שמחרוזת טווח התאים שגויה.
פתרון: ודא שטווח התאים תואם לנתונים שלך. בדוק ש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 לתאים בלולאה, ואז הוסף תרשים על טווח הנתונים הזה.


משאבים קשורים:

 עברית