إدارة سلاسل المخطط في بايثون
نظرة عامة
هذا المقال يصف دور ChartSeries في Aspose.Slides for Python، مع التركيز على كيفية هيكلة البيانات وتصورها داخل العروض التقديمية. توفر هذه الكائنات العناصر الأساسية التي تحدد مجموعات نقاط البيانات الفردية والفئات ومعلمات المظهر في المخطط. من خلال العمل مع ChartSeries، يمكن للمطورين دمج مصادر البيانات الأساسية بسلاسة والحفاظ على التحكم الكامل في طريقة عرض المعلومات، مما ينتج عروضًا تقديمية ديناميكية قائمة على البيانات تنقل الأفكار والتحليل بوضوح.
السلسلة هي صف أو عمود من الأرقام يتم رسمه في مخطط.

تعيين تداخل السلسلة
خاصية ChartSeries.overlap تتحكم في كيفية تداخل الأشرطة والأعمدة في مخطط ثنائي الأبعاد عن طريق تحديد نطاق من -100 إلى 100. بما أن هذه الخاصية مرتبطة بمجموعة السلاسل بدلاً من كل سلسلة مخطط على حدة، فهي للقراءة فقط على مستوى السلسلة. لتكوين قيم التداخل، استخدم خاصية parent_series_group.overlap القابلة للقراءة والكتابة، والتي تطبق التداخل المحدد على جميع السلاسل في تلك المجموعة.
import aspose.slides as slides
import aspose.slides.charts as charts
series_overlap = 30
with slides.Presentation() as presentation:
slide = presentation.slides[0]
# أضف مخطط عمودي متجمع مع البيانات الافتراضية.
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 20, 20, 500, 200)
series = chart.chart_data.series[0]
if series.overlap == 0:
# تعيين تداخل السلسلة.
series.parent_series_group.overlap = series_overlap
# حفظ ملف العرض التقديمي إلى القرص.
presentation.save("series_overlap.pptx", slides.export.SaveFormat.PPTX)
النتيجة:

تغيير لون تعبئة السلسلة
يتيح Aspose.Slides تخصيص ألوان تعبئة سلاسل المخطط بسهولة، مما يسمح لك بتمييز نقاط بيانات معينة وإنشاء مخططات جذابة بصريًا. يتم ذلك عبر كائن Format، الذي يدعم أنواع تعبئة مختلفة وتكوينات ألوان وخيارات تنسيق متقدمة أخرى. بعد إضافة مخطط إلى شريحة والوصول إلى السلسلة المطلوبة، احصل على السلسلة وطبق لون التعبئة المناسب. بخلاف التعبئة الصلبة، يمكنك أيضًا الاستفادة من تعبئة التدرج أو النمط لتوفير مرونة تصميمية أكبر. بمجرد ضبط الألوان وفقًا لمتطلباتك، احفظ العرض التقديمي لتثبيت المظهر المحدث.
import aspose.slides as slides
import aspose.slides.charts as charts
import aspose.pydrawing as draw
series_color = draw.Color.blue
with slides.Presentation() as presentation:
slide = presentation.slides[0]
# أضف مخطط عمودي متجمع مع البيانات الافتراضية.
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 20, 20, 500, 200)
# حدد لون السلسلة الأولى.
series = chart.chart_data.series[0]
series.format.fill.fill_type = slides.FillType.SOLID
series.format.fill.solid_fill_color.color = series_color
# احفظ ملف العرض التقديمي إلى القرص.
presentation.save("series_color.pptx", slides.export.SaveFormat.PPTX)
النتيجة:

إعادة تسمية سلسلة
يوفر Aspose.Slides طريقة بسيطة لتعديل أسماء سلاسل المخطط، مما يسهل تسمية البيانات بطريقة واضحة وذات معنى. من خلال الوصول إلى خلية ورقة العمل ذات الصلة ببيانات المخطط، يمكن للمطورين تخصيص طريقة عرض البيانات. هذا التعديل مفيد خصوصًا عندما تحتاج أسماء السلاسل إلى تحديث أو توضيح بناءً على سياق البيانات. بعد إعادة تسمية السلسلة، يمكن حفظ العرض التقديمي لتثبيت التغييرات.
import aspose.slides as slides
import aspose.slides.charts as charts
series_name = "New name"
with slides.Presentation() as presentation:
slide = presentation.slides[0]
# أضف مخطط عمودي متجمع مع البيانات الافتراضية.
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 20, 20, 500, 200)
# تحديد اسم السلسلة الأولى.
series_cell = chart.chart_data.chart_data_workbook.get_cell(0, 0, 1)
series_cell.value = series_name
# احفظ ملف العرض التقديمي إلى القرص.
presentation.save("series_name.pptx", slides.export.SaveFormat.PPTX)
الشفرة البديلة لتغيير اسم السلسلة:
import aspose.slides as slides
import aspose.slides.charts as charts
series_name = "New name"
with slides.Presentation() as presentation:
slide = presentation.slides[0]
# أضف مخطط عمودي متجمع مع البيانات الافتراضية.
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 20, 20, 500, 200)
series = chart.chart_data.series[0]
# تعيين اسم السلسلة الأولى.
series.name.as_cells[0].value = series_name
# احفظ ملف العرض التقديمي إلى القرص.
presentation.save("series_name.pptx", slides.export.SaveFormat.PPTX)
النتيجة:

الحصول على لون تعبئة السلسلة التلقائي
يسمح Aspose.Slides for Python بالحصول على لون التعبئة التلقائي لسلاسل المخطط داخل منطقة الرسم. بعد إنشاء كائن Presentation والحصول على المرجع إلى الشريحة المطلوبة عبر الفهرس، يمكنك إضافة مخطط من النوع المفضل (مثل ChartType.CLUSTERED_COLUMN). من خلال الوصول إلى السلسلة في المخطط، يمكنك استخراج لون التعبئة التلقائي.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
# أضف مخطط عمودي متجمع مع البيانات الافتراضية.
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 20, 20, 500, 200)
for i in range(len(chart.chart_data.series)):
# احصل على لون تعبئة السلسلة.
color = chart.chart_data.series[i].get_automatic_series_color()
print(f"Series {i} color: {color.name}")
Series 0 color: ff4f81bd
Series 1 color: ffc0504d
Series 2 color: ff9bbb59
تعيين تعبئة عكسية للسلسلة
عندما تحتوي سلسلة البيانات على قيم موجبة وسالبة، قد يجعل تلوين كل عمود أو شريط باللون نفسه المخطط صعب القراءة. يتيح Aspose.Slides for Python تعيين لون تعبئة عكسي — تعبئة منفصلة تُطبق تلقائيًا على نقاط البيانات التي تقع تحت الصفر — وبذلك تبرز القيم السالبة بنظرة واحدة. في هذا القسم ستتعلم كيفية تفعيل هذا الخيار، اختيار لون مناسب، وحفظ العرض التقديمي المحدث.
import aspose.slides as slides
import aspose.slides.charts as charts
import aspose.pydrawing as draw
invert_color = draw.Color.red
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 20, 20, 500, 200)
workBook = chart.chart_data.chart_data_workbook
chart.chart_data.series.clear()
chart.chart_data.categories.clear()
# أضف فئات جديدة.
chart.chart_data.categories.add(workBook.get_cell(0, 1, 0, "Category 1"))
chart.chart_data.categories.add(workBook.get_cell(0, 2, 0, "Category 2"))
chart.chart_data.categories.add(workBook.get_cell(0, 3, 0, "Category 3"))
# أضف سلسلة جديدة.
series = chart.chart_data.series.add(workBook.get_cell(0, 0, 1, "Series 1"), chart.type)
# املأ بيانات السلسلة.
series.data_points.add_data_point_for_bar_series(workBook.get_cell(0, 1, 1, -20))
series.data_points.add_data_point_for_bar_series(workBook.get_cell(0, 2, 1, 50))
series.data_points.add_data_point_for_bar_series(workBook.get_cell(0, 3, 1, -30))
# حدد إعدادات اللون للسلسلة.
series_color = series.get_automatic_series_color()
series.invert_if_negative = True
series.format.fill.fill_type = slides.FillType.SOLID
series.format.fill.solid_fill_color.color = series_color
series.inverted_solid_fill_color.color = invert_color
presentation.save("inverted_solid_fill_color.pptx", slides.export.SaveFormat.PPTX)
النتيجة:

يمكنك عكس لون التعبئة لنقطة بيانات واحدة بدلاً من السلسلة بأكملها. ما عليك سوى الوصول إلى ChartDataPoint المطلوبة وتعيين خاصية invert_if_negative إلى True.
import aspose.slides as slides
import aspose.slides.charts as charts
import aspose.pydrawing as draw
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 20, 20, 500, 200, True)
chart.chart_data.series.clear()
series = series.add(chart.chart_data.chart_data_workbook.get_cell(0, "B1"), chart.type)
series.data_points.add_data_point_for_bar_series(chart.chart_data.chart_data_workbook.get_cell(0, "B2", -5))
series.data_points.add_data_point_for_bar_series(chart.chart_data.chart_data_workbook.get_cell(0, "B3", 3))
series.data_points.add_data_point_for_bar_series(chart.chart_data.chart_data_workbook.get_cell(0, "B4", -3))
series.data_points.add_data_point_for_bar_series(chart.chart_data.chart_data_workbook.get_cell(0, "B5", 1))
series.invert_if_negative = False
series.data_points[2].invert_if_negative = True
presentation.save("data_point_invert_color_if_negative.pptx", slides.export.SaveFormat.PPTX)
مسح البيانات لنقاط بيانات محددة
أحيانًا يحتوي المخطط على قيم اختبارية، قيم شاذة، أو مدخلات قديمة تحتاج إلى إزالتها دون إعادة بناء السلسلة بالكامل. يتيح Aspose.Slides for Python استهداف أي نقطة بيانات عبر الفهرس، مسح محتواها، وتحديث المخطط فورًا بحيث تنقل النقاط المتبقية وتُعاد مقياس المحاور تلقائيًا.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation("test_chart.pptx") as presentation:
slide = presentation.slides[0]
chart = slide.shapes[0]
series = chart.chart_data.series[0]
for data_point in series.data_points:
data_point.x_value.as_cell.value = None
data_point.y_value.as_cell.value = None
series.data_points.clear()
presentation.save("clear_data_points.pptx", slides.export.SaveFormat.PPTX)
تعيين عرض الفجوة للسلسلة
يتحكم عرض الفجوة في مقدار المساحة الفارغة بين الأعمدة أو الأشرطة المتجاورة — زيادة الفجوة تُبرز الفئات الفردية، بينما تقليل الفجوة يخلق مظهرًا أكثر كثافة وضغطًا. من خلال Aspose.Slides for Python يمكنك ضبط هذه المعلمة لسلسلة كاملة، لتحقيق التوازن البصري المطلوب في العرض التقديمي دون تعديل البيانات الأساسية.
import aspose.slides as slides
import aspose.slides.charts as charts
gap_width = 30
# أنشئ عرض تقديمي فارغ.
with slides.Presentation() as presentation:
# الوصول إلى الشريحة الأولى.
slide = presentation.slides[0]
# أضف مخططًا بالبيانات الافتراضية.
chart = slide.shapes.add_chart(charts.ChartType.STACKED_COLUMN, 20, 20, 500, 200)
# احفظ العرض التقديمي إلى القرص.
presentation.save("default_gap_width.pptx", slides.export.SaveFormat.PPTX)
# ضبط قيمة gap_width.
series = chart.chart_data.series[0]
series.parent_series_group.gap_width = gap_width
# احفظ العرض التقديمي إلى القرص.
presentation.save("gap_width_30.pptx", slides.export.SaveFormat.PPTX)
النتيجة:

الأسئلة الشائعة
هل هناك حد لعدد السلاسل التي يمكن أن يحتويها مخطط واحد؟
لا يفرض Aspose.Slides حدًا ثابتًا لعدد السلاسل التي يمكنك إضافتها. الحد العملي يُحدد بقراءة المخطط والذاكرة المتوفرة لتطبيقك.
ماذا لو كانت الأعمدة داخل مجموعة العنقودية متقاربة جدًا أو متباعدة جدًا؟
قم بضبط إعداد gap_width لتلك السلسلة (أو مجموعة السلاسل الأم). زيادة القيمة تُوسّع المسافة بين الأعمدة، بينما تقليلها يجعلهما أقرب.