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

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

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

todo:image_alt_text

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

Presentation pres = new Presentation();
try {
    IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.Sunburst, 100, 100, 450, 400);

    // ...
} finally {
    if (pres != null) pres.dispose();
}

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

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

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

إظهار قيمة نقطة البيانات “Leaf 4”:

IChartDataPointCollection 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”) بدلاً من اسم الفئة. ثم تعيين لون النص إلى الأصفر:

IDataLabel 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(Color.YELLOW);

todo:image_alt_text

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

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

Presentation pres = new Presentation();
try {
    IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.Sunburst, 100, 100, 450, 400);

    IChartDataPointCollection dataPoints = chart.getChartData().getSeries().get_Item(0).getDataPoints();

    IChartDataPointLevel stem4branch = dataPoints.get_Item(9).getDataPointLevels().get_Item(1);

    stem4branch.getFormat().getFill().setFillType(FillType.Solid);
    stem4branch.getFormat().getFill().getSolidFillColor().setColor(Color.RED);

    pres.save("pres.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

todo:image_alt_text

الأسئلة الشائعة

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

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

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

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

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

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

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

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