ปรับแต่งจุดข้อมูลในแผนภูมิ 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 กำหนดโหนดใบไม้ ส่วนคอลัมน์อื่น ๆ กำหนดจุดข้อมูลแบบลำดับชั้น:
เริ่มต้นด้วยการเพิ่มแผนภูมิ 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 classes และเมธอด ChartDataPoint::getDataPointLevels ให้การเข้าถึงการจัดรูปแบบจุดข้อมูลของแผนภูมิ Treemap และ Sunburst. ChartDataPointLevelsManager ใช้สำหรับเข้าถึงหมวดหมู่หลายระดับ – มันเป็นคอนเทนเนอร์ของวัตถุ ChartDataPointLevel objects. โดยพื้นฐานแล้วมันเป็น 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);
ตั้งป้ายและสีของจุดข้อมูล
ตั้งป้ายข้อมูลของ “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);
ตั้งสีสาขาของจุดข้อมูล
เปลี่ยนสีของสาขา “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();
}
}
คำถามที่พบบ่อย
ฉันสามารถเปลี่ยนลำดับ (การจัดเรียง) ของส่วนใน Sunburst/Treemap ได้หรือไม่?
ไม่ PowerPoint จะจัดเรียงส่วนโดยอัตโนมัติ (โดยทั่วไปเรียงจากค่ามากไปน้อยตามเข็มนาฬิกา) Aspose.Slides ทำตามพฤติกรรมนี้เช่นกัน: คุณไม่สามารถเปลี่ยนลำดับโดยตรงได้; ต้องทำโดยการเตรียมข้อมูลล่วงหน้า
ธีมของงานนำเสนอมีผลต่อสีของส่วนและป้ายอย่างไร?
สีของแผนภูมิจะสืบทอดจาก ธีม/พาเลต ของงานนำเสนอ ถ้าคุณไม่ได้ตั้งค่าเติมสี/ฟอนต์ด้วยตนเอง เพื่อให้ผลลัพธ์สม่ำเสมอ ควรกำหนดการเติมสีทึบและการจัดรูปแบบข้อความที่ระดับที่ต้องการ
การส่งออกเป็น PDF/PNG จะคงสีสาขาที่กำหนดเองและการตั้งค่าป้ายไว้หรือไม่?
ใช่ เมื่อส่งออกงานนำเสนอ การตั้งค่าของแผนภูมิ (การเติมสี, ป้าย) จะถูกคงไว้ในรูปแบบผลลัพธ์ เนื่องจาก Aspose.Slides จะเรนเดอร์โดยใช้การจัดรูปแบบของแผนภูมิ
ฉันสามารถคำนวณพิกัดจริงของป้าย/องค์ประกอบเพื่อวางโอเวอร์เลย์แบบกำหนดเองบนแผนภูมิได้หรือไม่?
ได้ หลังจากการจัดวางแผนภูมิได้รับการตรวจสอบแล้ว พิกัด x และ y จริงจะพร้อมใช้งานสำหรับองค์ประกอบ (เช่น DataLabel) ซึ่งช่วยในการวางตำแหน่งโอเวอร์เลย์อย่างแม่นยำ