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

معرفی

در میان انواع دیگر نمودارهای PowerPoint، دو نوع «سلسله‌مراتبی» وجود دارد - Treemap و Sunburst (که همچنین به عنوان نمودار Sunburst، دیاگرام Sunburst، نمودار شعاعی، گراف شعاعی یا نمودار کیک چندسطحی شناخته می‌شود). این نمودارها داده‌های سلسله‌مراتبی را که به صورت درخت سازماندهی شده‌اند - از برگ‌ها تا بالای شاخه - نمایش می‌دهند. برگ‌ها توسط نقاط داده سری تعریف می‌شوند و هر سطح گروه‌بندی تو در تو بعدی توسط دسته‌بندی مربوطه تعریف می‌شود. Aspose.Slides for Node.js via Java امکان قالب‌بندی نقاط داده نمودار Sunburst و Treemap را در JavaScript فراهم می‌کند.

در اینجا یک نمودار Sunburst آورده شده است که داده‌های ستون Series1 گره‌های برگ را تعریف می‌کنند، در حالی که ستون‌های دیگر نقاط داده سلسله‌مراتبی را تعریف می‌کنند: todo:image_alt_text

بیایید با افزودن یک نمودار Sunburst جدید به ارائه شروع کنیم:

var pres = new aspose.slides.Presentation();
try {
    var chart = pres.getSlides().get_Item(0).getShapes().addChart(aspose.slides.ChartType.Sunburst, 100, 100, 450, 400);
    // ...
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

اگر نیاز به قالب‌بندی نقاط داده نمودار باشد، باید از موارد زیر استفاده کنیم: ChartDataPointLevelsManager، ChartDataPointLevel کلاس‌ها و ChartDataPoint.getDataPointLevels متد دسترسی به قالب‌بندی نقاط دادهٔ Treemap و Sunburst را فراهم می‌کنند. ChartDataPointLevelsManager برای دسترسی به دسته‌بندی‌های چندسطحی استفاده می‌شود – این یک کانتنر برای ChartDataPointLevel اشیاء است. در اصل این یک wrapper برای ChartCategoryLevelsManager با خواص اضافه شده خاص برای نقاط داده است. کلاس ChartDataPointLevel دو متد دارد: getFormat و getDataLabel که دسترسی به تنظیمات مربوطه را فراهم می‌کنند.

نمایش مقدار نقطه داده

نمایش مقدار نقطه داده «Leaf 4»:

var 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») را به جای نام دسته نمایش دهد. سپس رنگ متن را به زرد تنظیم کنید:

var branch1Label = dataPoints.get_Item(0).getDataPointLevels().get_Item(0).getLabel();
branch1Label.getDataLabelFormat().setShowCategoryName(false);
branch1Label.getDataLabelFormat().setShowSeriesName(true);
branch1Label.getDataLabelFormat().getTextFormat().getPortionFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
branch1Label.getDataLabelFormat().getTextFormat().getPortionFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "YELLOW"));

todo:image_alt_text

تنظیم رنگ شاخه نقطه داده

رنگ شاخه «Steam 4» را تغییر دهید:

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

todo:image_alt_text

سوالات متداول

آیا می‌توانم ترتیب (مرتب‌سازی) بخش‌ها در Sunburst/Treemap را تغییر دهم؟

خیر. PowerPoint به‌صورت خودکار بخش‌ها را مرتب می‌کند (معمولاً بر اساس مقادیر نزولی، به صورت ساعتگرد). Aspose.Slides این رفتار را بازتاب می‌دهد: نمی‌توانید ترتیب را به‌طور مستقیم تغییر دهید؛ این کار را با پیش‌پردازش داده‌ها انجام می‌دهید.

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

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

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

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

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

بله. پس از تأیید طرح نمودار، مقادیر X واقعی و Y واقعی برای عناصر در دسترس است (به عنوان مثال، یک DataLabel) که برای موقعیت‌گذاری دقیق لایه‌های پوششی مفید است.