كيفية إنشاء المخططات في Excel باستخدام Python
تحول المخططات بيانات الجداول الخام إلى رؤى بصرية. Aspose.Cells FOSS for Python يتيح لك إنشاء مخططات عمودية، خطية، شريطية، ودائرية برمجياً، مع تحكم كامل في سلاسل البيانات، تسميات الفئات، عنوان المخطط، والموقع، دون الحاجة إلى Microsoft Excel.
لماذا إنشاء المخططات باستخدام Aspose.Cells FOSS؟
- لا حاجة لـ Excel: أنشئ المخططات بالكامل باستخدام Python، على أي نظام تشغيل.
- واجهة برمجة تطبيقات طريقة-لكل-نوع: استخدم
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 يحدد نطاق الخلايا لتسميات المحور السيني. المُعامل 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. لا تظهر تسميات الفئات على المحور السيني
السبب: 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'
Cause: مكتبة FOSS تستخدم واجهة برمجة تطبيقات طريقة‑لكل‑نوع، وليس add(ChartType.COLUMN, ...).
Fix: استخدم 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 إلى الخلايا في حلقة، ثم أضف مخططًا فوق نطاق البيانات هذا.
الموارد ذات الصلة: