سفارشی‌سازی نقاط داده در نمودارهای Treemap و Sunburst با استفاده از Java

مقدمه

در میان انواع دیگر نمودارهای PowerPoint، دو نوع «سلسله‌وار» وجود دارد - Treemap و Sunburst (که همچنین به عنوان Sunburst Graph، Sunburst Diagram، Radial Chart، Radial Graph یا Multi Level Pie Chart شناخته می‌شود). این نمودارها داده‌های سلسله‌وار را که به شکل درخت سازمان یافته‌اند - از برگ‌ها تا رأس شاخه - نمایش می‌دهند. برگ‌ها توسط نقاط داده سری تعریف می‌شوند و هر سطح گروه‌بندی تو در تو بعدی توسط دسته‌بندی مربوطه تعریف می‌شود. 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 classes and IChartDataPoint.getDataPointLevels method دسترسی به قالب‌بندی نقاط دادهٔ نمودارهای Treemap و Sunburst را فراهم می‌کنند. IChartDataPointLevelsManager برای دسترسی به دسته‌بندی‌های چندسطحی استفاده می‌شود - این کلاس مخزن اشیای IChartDataPointLevel را نمایندگی می‌کند. در اصل این یک wrapper برای 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 این رفتار را بازتاب می‌دهد: شما نمی‌توانید ترتیب را به‌صورت مستقیم تغییر دهید؛ برای این کار باید داده‌ها را پیش‌پردازش کنید.

قالب ارائه چگونه بر رنگ‌های قطعات و برچسب‌ها تأثیر می‌گذارد؟

رنگ‌های نمودار از theme/palette ارائه ارث می‌برند مگر اینکه به‌صورت صریح پرها/قلم‌ها را تنظیم کنید. برای نتایج ثابت، پرهای جامد و قالب‌بندی متن را در سطوح مورد نیاز قفل کنید.

آیا خروجی به PDF/PNG رنگ‌های سفارشی شاخه و تنظیمات برچسب را حفظ می‌کند؟

بله. هنگام استخراج ارائه، تنظیمات نمودار (پرها، برچسب‌ها) در فرمت‌های خروجی حفظ می‌شوند زیرا Aspose.Slides با اعمال قالب‌بندی نمودار رندر می‌کند.

آیا می‌توانم مختصات واقعی یک برچسب/عنصر را برای قرار دادن پوشش سفارشی روی نمودار محاسبه کنم؟

بله. پس از اعتبارسنجی چیدمان نمودار، مقادیر x و y واقعی برای عناصر در دسترس هستند (به عنوان مثال برای یک DataLabel) که در مکان‌یابی دقیق پوشش‌ها کمک می‌کند.