العمل مع الرسوم البيانية

العمل مع الرسوم البيانية

نظرة عامة

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)المنطقة

جميع المعلمات الأربعة الوضعية تصف المنطقة المستطيلة في الورقة حيث سيتم إدراج الرسم البياني.السلسلة والعمود المؤشرات هي صفر القاعدة.كل واحد منهم طريقة العودة إلى A 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 = False.- من legend_position القيمة تجاهل عندما يخفي الأسطورة.


سلسلة البيانات التكوين

استخدام chart.n_series.add() إرفاق البيانات إلى خريطة.موافقة كل الحجج مثل كلمات مفتاحية لتجنب الارتباك في الأوامر:

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.add( ) يزيد عن إعداد مستوى الرسم البياني لهذا السلسلة المحددة:

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مؤشر الصفر الأيمن من أعلى الأعمدة

نموذج شائع هو وضع الرسم البياني مباشرة تحت البيانات.إذا كانت بياناتك تنتهي في Excel صف 6 (مؤشر الصف 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_roow >= 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.

انظر أيضا

 العربية