تخصيص نقاط البيانات في مخططات Treemap و Sunburst باستخدام PHP

إلى جانب أنواع أخرى من مخططات PowerPoint، هناك نوعان “هرميان” - مخطط Treemap ومخطط Sunburst (المعروف أيضًا باسم مخطط Sunburst Graph أو Sunburst Diagram أو Radial Chart أو Radial Graph أو Multi Level Pie Chart). تعرض هذه المخططات بيانات هرمية منظمة كشجرة - من الأوراق إلى أعلى الفرع. تُعرّف الأوراق بنقاط بيانات السلسلة، ويُعرّف كل مستوى تجميع متداخل لاحقًا بالفئة المقابلة. يتيح Aspose.Slides for PHP عبر Java تنسيق نقاط بيانات مخطط Sunburst و Treemap.

فيما يلي مخطط Sunburst، حيث تُعرّف البيانات في عمود Series1 عقد الأوراق، بينما تحدد الأعمدة الأخرى نقاط البيانات الهرمية:

todo:image_alt_text

لنبدأ بإضافة مخطط Sunburst جديد إلى العرض التقديمي:

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Sunburst, 100, 100, 450, 400);
    # ...
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

إذا كان هناك حاجة لتنسيق نقاط بيانات المخطط، يجب علينا استخدام ما يلي:

IChartDataPointLevelsManager,
فئات IChartDataPointLevel
وطريقة IChartDataPoint.getDataPointLevels
توفر الوصول إلى تنسيق نقاط بيانات مخططي Treemap و Sunburst.

IChartDataPointLevelsManager يُستخدم للوصول إلى الفئات متعددة المستويات - وهو يمثل حاوية كائنات IChartDataPointLevel.
في الأساس هو غلاف لـ IChartCategoryLevelsManager مع الخصائص المضافة المحددة لنقاط البيانات.
فئة IChartDataPointLevel تحتوي على طريقتين: getFormat وgetDataLabel التي توفر الوصول إلى الإعدادات المقابلة.

إظهار قيمة نقطة البيانات

عرض قيمة نقطة البيانات “Leaf 4”:

  $dataPoints = $chart->getChartData()->getSeries()->get_Item(0)->getDataPoints();
  $dataPoints->get_Item(3)->getDataPointLevels()->get_Item(0)->getLabel()->getDataLabelFormat()->setShowValue(true);

todo:image_alt_text

تعيين تسمية ولون نقطة البيانات

اجعل تسمية البيانات “Branch 1” تُظهر اسم السلسلة (“Series1”) بدلاً من اسم الفئة. ثم اضبط لون النص إلى الأصفر:

  $branch1Label = $dataPoints->get_Item(0)->getDataPointLevels()->get_Item(0)->getLabel();
  $branch1Label->getDataLabelFormat()->setShowCategoryName(false);
  $branch1Label->getDataLabelFormat()->setShowSeriesName(true);
  $branch1Label->getDataLabelFormat()->getTextFormat()->getPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
  $branch1Label->getDataLabelFormat()->getTextFormat()->getPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->YELLOW);

todo:image_alt_text

تعيين لون فرع نقطة البيانات

غيّر لون فرع “Steam 4”:

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Sunburst, 100, 100, 450, 400);
    $dataPoints = $chart->getChartData()->getSeries()->get_Item(0)->getDataPoints();
    $stem4branch = $dataPoints->get_Item(9)->getDataPointLevels()->get_Item(1);
    $stem4branch->getFormat()->getFill()->setFillType(FillType::Solid);
    $stem4branch->getFormat()->getFill()->getSolidFillColor()->setColor(java("java.awt.Color")->RED);
    $pres->save("pres.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

todo:image_alt_text

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

هل يمكنني تغيير ترتيب (الفرز) الشرائح في مخطط Sunburst/Treemap؟

لا. يقوم PowerPoint بفرز الشرائح تلقائيًا (عادةً حسب القيم تنازليًا، باتجاه عقارب الساعة). ينسخ Aspose.Slides هذا السلوك: لا يمكنك تغيير الترتيب مباشرةً؛ بل يمكنك تحقيق ذلك عبر معالجة البيانات مسبقًا.

كيف يؤثر سمة العرض التقديمي على ألوان الشرائح والتسميات؟

ألوان المخطط ترث سمة/لوحة ألوان العرض التقديمي theme/palette ما لم تقم بتعيين التعبئة/الخطوط صراحةً. للحصول على نتائج متسقة، قم بتثبيت التعبئات الصلبة وتنسيق النص في المستويات المطلوبة.

هل سيحافظ التصدير إلى PDF/PNG على ألوان الفروع المخصصة وإعدادات التسميات؟

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

هل يمكنني حساب الإحداثيات الفعلية لتسمية/عنصر لوضع طبقة مخصصة فوق المخطط؟

نعم. بعد التحقق من تخطيط المخطط، تتوفر قيم x وy الفعليتين للعناصر (على سبيل المثال، DataLabel)، مما يساعد في وضع الطبقات فوق المخطط بدقة.