إدارة تسميات بيانات المخطط في العروض التقديمية باستخدام بايثون

نظرة عامة

تظهر تسميات البيانات على المخطط تفاصيل حول سلسلة بيانات المخطط أو نقاط البيانات الفردية. تسمح للقارئ بالتعرف بسرعة على سلاسل البيانات كما تجعل المخططات أسهل للفهم. في Aspose.Slides للغة Python، يمكنك تمكين، تخصيص، وتنسيق تسميات البيانات لأي مخطط — اختيار ما يتم عرضه (القيم، النسب المئوية، أسماء السلاسل أو الفئات)، تحديد موقع التسميات، وكيفية ظهورها (الخط، تنسيق الأرقام، الفواصل، خطوط الربط، وأكثر). يوضح هذا المقال واجهات برمجة التطبيقات الأساسية والأمثلة التي تحتاجها لإضافة تسميات واضحة ومفيدة إلى مخططاتك.

ضبط دقة تسمية البيانات

غالبًا ما تعرض تسميات البيانات على المخطط قيمًا رقمية تتطلب دقة ثابتة. يوضح هذا القسم كيفية التحكم في عدد المنازل العشرية لتسميات البيانات في Aspose.Slides عن طريق تطبيق تنسيق رقم مناسب.

المثال التالي بلغة Python يوضح كيفية ضبط الدقة العددية لتسميات بيانات المخطط:

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.LINE, 50, 50, 500, 300)

    series = chart.chart_data.series[0]
    series.labels.default_data_label_format.show_value = True
    series.number_format_of_values = "#,##0.00"

    presentation.save("data_label_precision.pptx", slides.export.SaveFormat.PPTX)

عرض النسب المئوية كتسميات

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

import aspose.slides as slides
import aspose.slides.charts as charts

# إنشاء كائن من فئة Presentation.
with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    chart = slide.shapes.add_chart(charts.ChartType.STACKED_COLUMN, 20, 20, 600, 400)
    series = chart.chart_data.series[0]

    total_for_categories = [0]*len(chart.chart_data.categories)
    for k in range(len(chart.chart_data.categories)):
        for i in range(len(chart.chart_data.series)):
            total_for_categories[k] += chart.chart_data.series[i].data_points[k].value.data

    for i in range(len(chart.chart_data.series)):
        series = chart.chart_data.series[i]
        series.labels.default_data_label_format.show_legend_key = False

        for j in range(len(series.data_points)):
            data_point_percent = series.data_points[j].value.data / total_for_categories[j] * 100

            text_portion = slides.Portion()
            text_portion.text = "{0:.2f} %".format(data_point_percent)
            text_portion.portion_format.font_height = 8

            label = series.data_points[j].label
            label.text_frame_for_overriding.text = ""

            paragraph = label.text_frame_for_overriding.paragraphs[0]
            paragraph.portions.add(text_portion)

            label.data_label_format.show_series_name = False
            label.data_label_format.show_percentage = False
            label.data_label_format.show_legend_key = False
            label.data_label_format.show_category_name = False
            label.data_label_format.show_bubble_size = False

    # حفظ العرض التقديمي الذي يحتوي على المخطط.
    presentation.save("percentage_as_label.pptx", slides.export.SaveFormat.PPTX)

إظهار علامة النسبة المئوية مع تسميات بيانات المخطط

يعرض هذا القسم كيفية عرض النسب المئوية في تسميات بيانات المخطط وإضافة علامة النسبة المئوية باستخدام Aspose.Slides. ستتعلم كيفية تمكين قيم النسبة المئوية لسلسلة كاملة أو لنقاط محددة (مناسبة للمخططات الدائرية، الدونات، ومخططات التراكم 100٪) وكيفية التحكم في التنسيق عبر خيارات التسمية أو تنسيق رقم مخصص.

المثال التالي بلغة Python يوضح كيفية إضافة علامة النسبة المئوية إلى تسمية بيانات المخطط:

import aspose.slides as slides
import aspose.slides.charts as charts
import aspose.pydrawing as draw

# إنشاء كائن من فئة Presentation.
with slides.Presentation() as presentation:

    # الحصول على مرجع الشريحة بواسطة الفهرس.
    slide = presentation.slides[0]

    # إنشاء مخطط PercentsStackedColumn على الشريحة.
    chart = slide.shapes.add_chart(charts.ChartType.PERCENTS_STACKED_COLUMN, 20, 20, 600, 400)

    chart.axes.vertical_axis.is_number_format_linked_to_source = False
    chart.axes.vertical_axis.number_format = "0.00%"

    chart.chart_data.series.clear()

    # الحصول على دفتر عمل بيانات المخطط.
    workbook = chart.chart_data.chart_data_workbook
    worksheet_index = 0

    # إضافة سلسلة جديدة.
    series = chart.chart_data.series.add(workbook.get_cell(worksheet_index, 0, 1, "Reds"), chart.type)
    series.data_points.add_data_point_for_bar_series(workbook.get_cell(worksheet_index, 1, 1, 0.30))
    series.data_points.add_data_point_for_bar_series(workbook.get_cell(worksheet_index, 2, 1, 0.50))
    series.data_points.add_data_point_for_bar_series(workbook.get_cell(worksheet_index, 3, 1, 0.80))
    series.data_points.add_data_point_for_bar_series(workbook.get_cell(worksheet_index, 4, 1, 0.65))

    # تحديد لون تعبئة السلسلة.
    series.format.fill.fill_type = slides.FillType.SOLID
    series.format.fill.solid_fill_color.color = draw.Color.red

    # تحديد خصائص تنسيق التسمية.
    series.labels.default_data_label_format.show_value = True
    series.labels.default_data_label_format.is_number_format_linked_to_source = False
    series.labels.default_data_label_format.number_format = "0.0%"
    series.labels.default_data_label_format.text_format.portion_format.font_height = 10
    series.labels.default_data_label_format.text_format.portion_format.fill_format.fill_type = slides.FillType.SOLID
    series.labels.default_data_label_format.text_format.portion_format.fill_format.solid_fill_color.color = draw.Color.white
    series.labels.default_data_label_format.show_value = True

    # إضافة سلسلة جديدة.
    series2 = chart.chart_data.series.add(workbook.get_cell(worksheet_index, 0, 2, "Blues"), chart.type)
    series2.data_points.add_data_point_for_bar_series(workbook.get_cell(worksheet_index, 1, 2, 0.70))
    series2.data_points.add_data_point_for_bar_series(workbook.get_cell(worksheet_index, 2, 2, 0.50))
    series2.data_points.add_data_point_for_bar_series(workbook.get_cell(worksheet_index, 3, 2, 0.20))
    series2.data_points.add_data_point_for_bar_series(workbook.get_cell(worksheet_index, 4, 2, 0.35))

    # تحديد نوع التعبئة واللون.
    series2.format.fill.fill_type = slides.FillType.SOLID
    series2.format.fill.solid_fill_color.color = draw.Color.blue
    series2.labels.default_data_label_format.show_value = True
    series2.labels.default_data_label_format.is_number_format_linked_to_source = False
    series2.labels.default_data_label_format.number_format = "0.0%"
    series2.labels.default_data_label_format.text_format.portion_format.font_height = 10
    series2.labels.default_data_label_format.text_format.portion_format.fill_format.fill_type = slides.FillType.SOLID
    series2.labels.default_data_label_format.text_format.portion_format.fill_format.solid_fill_color.color = draw.Color.white

    # حفظ العرض التقديمي.
    presentation.save("percentage_sign.pptx", slides.export.SaveFormat.PPTX)

ضبط المسافة بين التسمية والمحور

يعرض هذا القسم كيفية التحكم في المسافة بين تسميات البيانات ومحور المخطط في Aspose.Slides. يساعد تعديل هذا الإزاحة على منع التداخل وتحسين القابلية للقراءة في الرسومات الكثيفة.

الكود التالي بلغة Python يوضح كيفية ضبط مسافة التسمية من محور الفئات عند العمل مع مخطط يعتمد على المحاور:

import aspose.slides as slides
import aspose.slides.charts as charts

# إنشاء كائن من فئة Presentation.
with slides.Presentation() as presentation:
    # الحصول على مرجع الشريحة.
    slide = presentation.slides[0]

    # إنشاء مخطط عمود مجمع على الشريحة.
    chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 20, 20, 500, 300)

    # ضبط مسافة التسمية من المحور الفئوي (الأفقي).
    chart.axes.horizontal_axis.label_offset = 500

    # حفظ العرض التقديمي.
    presentation.save("axis_label_distance.pptx", slides.export.SaveFormat.PPTX)

ضبط موضع التسمية

عند إنشاء مخطط لا يستخدم المحاور، مثل المخطط الدائري، قد تكون تسميات البيانات قريبة جدًا من الحافة. في هذه الحالة، قم بضبط موضع التسمية بحيث تظهر خطوط الربط بوضوح.

الكود التالي بلغة Python يوضح كيفية ضبط موضع التسمية على مخطط دائري:

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.PIE, 50, 50, 600, 300)

    series = chart.chart_data.series[0]
    series.labels.default_data_label_format.show_value = True
    series.labels.default_data_label_format.show_leader_lines = True

    label = series.labels[0]
    label.data_label_format.position = charts.LegendDataLabelPosition.OUTSIDE_END

    label.x = 0.05
    label.y = 0.1

    presentation.save("presentation.pptx", slides.export.SaveFormat.PPTX)

تم تغيير موضع التسمية

الأسئلة المتكررة

كيف يمكنني منع تداخل تسميات البيانات في المخططات الكثيفة؟

ا combine وضعية التسمية التلقائية، خطوط الربط، وتقليل حجم الخط؛ وإذا لزم الأمر، إخفاء بعض الحقول (مثل الفئة) أو عرض التسميات فقط للنقاط المتطرفة/المهمة.

كيف يمكنني تعطيل التسميات للقيم الصفرية أو السالبة أو الفارغة فقط؟

قُم بترشيح نقاط البيانات قبل تمكين التسميات وأوقف العرض للقيم التي تساوي 0 أو القيم السالبة أو القيم المفقودة وفق قاعدة محددة.

كيف يمكنني ضمان نمط تسمية ثابت عند التصدير إلى PDF/صور؟

حدد الخطوط (العائلة، الحجم) صراحةً وتحقق من توفر الخط على جانب التقديم لتجنب الاعتماد على خطوط بديلة.