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

مقدمه

در میان انواع دیگر نمودارهای PowerPoint، دو نوع «سلسله‌مراتبی» وجود دارد - Treemap و Sunburst (که به عنوان Sunburst Graph، Sunburst Diagram، Radial Chart، Radial Graph یا Multi Level Pie Chart نیز شناخته می‌شوند). این نمودارها داده‌های سلسله‌مراتبی را به صورت یک درخت - از برگ‌ها تا بالای شاخه - نمایش می‌دهند. برگ‌ها توسط نقاط داده سری تعریف می‌شوند و هر سطح گروه‌بندی تو در تو بعدی توسط دسته مرتبط تعریف می‌شود. Aspose.Slides for PHP via 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();
    }
  }

اگر نیازی به قالب‌بندی نقاط دادهٔ نمودار باشد، باید از موارد زیر استفاده کنیم:

ChartDataPointLevelsManager، ChartDataPointLevel کلاس‌ها و روش ChartDataPoint::getDataPointLevels دسترسی به قالب‌بندی نقاط دادهٔ نمودارهای Treemap و Sunburst را فراهم می‌کنند. ChartDataPointLevelsManager برای دسترسی به دسته‌بندی‌های چندسطحی استفاده می‌شود - این شیء container ChartDataPointLevel را نشان می‌دهد. در اصل این یک wrapper برای ChartCategoryLevelsManager است که ویژگی‌های خاص برای نقاط داده به آن اضافه شده است. کلاس ChartDataPointLevel دو متد دارد: 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 این رفتار را بازتاب می‌دهد: نمی‌توانید ترتیب را به‌صورت مستقیم تغییر دهید؛ بلکه باید با پیش‌پردازش داده‌ها این کار را انجام دهید.

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

رنگ‌های نمودار، به همان‌صورت رنگ‌های قالب/پالت ارائه /slides/fa/php-java/presentation-theme/ به ارث می‌برند، مگر این‌که شما پرکردن‌ها/قلم‌ها را به‌طور صریح تنظیم کنید. برای نتایج ثابت، پرکردن‌های ثابت و قالب‌بندی متن را در سطوح مورد نیاز قفل کنید.

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

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

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

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