Sesuaikan Titik Data dalam Diagram Treemap dan Sunburst Menggunakan PHP

Pendahuluan

Di antara jenis diagram PowerPoint lainnya, ada dua jenis “hierarkis” – Treemap dan Sunburst chart (juga dikenal sebagai Sunburst Graph, Sunburst Diagram, Radial Chart, Radial Graph atau Multi Level Pie Chart). Diagram‑diagram ini menampilkan data hierarkis yang diatur seperti pohon – dari daun hingga puncak cabang. Daun didefinisikan oleh titik data seri, dan setiap tingkat pengelompokan bersarang berikutnya didefinisikan oleh kategori yang bersangkutan. Aspose.Slides for PHP via Java memungkinkan pemformatan titik data Sunburst Chart dan Treemap.

Berikut contoh Sunburst Chart, di mana data pada kolom Series1 mendefinisikan node daun, sementara kolom lain mendefinisikan titik data hierarkis:

todo:image_alt_text

Mari mulai dengan menambahkan diagram Sunburst baru ke presentasi:

  $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();
    }
  }

Jika perlu memformat titik data diagram, gunakan hal‑hal berikut:

ChartDataPointLevelsManager, ChartDataPointLevel kelas dan ChartDataPoint::getDataPointLevels metode menyediakan akses untuk memformat titik data Treemap dan Sunburst. ChartDataPointLevelsManager digunakan untuk mengakses kategori multi‑tingkat – ia mewakili kontainer dari ChartDataPointLevel objek.
Pada dasarnya ia merupakan wrapper untuk ChartCategoryLevelsManager dengan properti‑properti tambahan khusus untuk titik data. Kelas ChartDataPointLevel memiliki dua metode: getFormat dan getDataLabel yang menyediakan akses ke pengaturan yang bersesuaian.

Tampilkan Nilai Titik Data

Tampilkan nilai titik data “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

Atur Label dan Warna Titik Data

Atur label data “Branch 1” agar menampilkan nama seri (“Series1”) alih‑alih nama kategori. Kemudian atur warna teks menjadi kuning:

  $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

Atur Warna Cabang Titik Data

Ubah warna cabang “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

FAQ

Apakah saya dapat mengubah urutan (penyortiran) segmen pada Sunburst/Treemap?

Tidak. PowerPoint menyortir segmen secara otomatis (biasanya menurun, searah jarum jam). Aspose.Slides meniru perilaku ini: Anda tidak dapat mengubah urutan secara langsung; Anda melakukannya dengan memproses data terlebih dahulu.

Bagaimana tema presentasi memengaruhi warna segmen dan label?

Warna diagram mewarisi tema/palet presentasi kecuali Anda secara eksplisit mengatur isian/font. Untuk hasil yang konsisten, gunakan isian padat dan format teks pada tingkat yang diperlukan.

Apakah ekspor ke PDF/PNG mempertahankan warna cabang khusus dan pengaturan label?

Ya. Saat mengekspor presentasi, pengaturan diagram (isian, label) dipertahankan dalam format output karena Aspose.Slides merender dengan format diagram yang telah diterapkan.

Bisakah saya menghitung koordinat sebenarnya dari label/elemen untuk penempatan overlay khusus di atas diagram?

Ya. Setelah tata letak diagram divalidasi, nilai x aktual dan y aktual tersedia untuk elemen (misalnya, sebuah DataLabel), yang membantu dalam penempatan overlay secara tepat.