Tùy chỉnh các Điểm Dữ liệu trong Biểu đồ Treemap và Sunburst bằng PHP
Giới thiệu
Trong các loại biểu đồ PowerPoint khác, có hai loại “hierarchical” - Treemap và Sunburst ( còn được gọi là Sunburst Graph, Sunburst Diagram, Radial Chart, Radial Graph hoặc Multi Level Pie Chart). Các biểu đồ này hiển thị dữ liệu phân cấp được tổ chức dưới dạng cây - từ lá tới đỉnh nhánh. Các lá được xác định bởi các điểm dữ liệu trong series, và mỗi mức nhóm lồng nhau tiếp theo được xác định bởi danh mục tương ứng. Aspose.Slides for PHP via Java cho phép định dạng các điểm dữ liệu của biểu đồ Sunburst và Treemap .
Đây là một biểu đồ Sunburst, trong đó dữ liệu trong cột Series1 xác định các nút lá, trong khi các cột khác xác định các điểm dữ liệu phân cấp:
Hãy bắt đầu bằng cách thêm biểu đồ Sunburst mới vào bản trình bày:
$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();
}
}
Nếu cần định dạng các điểm dữ liệu của biểu đồ, chúng ta nên sử dụng những thứ sau:
ChartDataPointLevelsManager, ChartDataPointLevel classes và phương thức ChartDataPoint::getDataPointLevels cung cấp quyền truy cập để định dạng các điểm dữ liệu của biểu đồ Treemap và Sunburst. ChartDataPointLevelsManager được dùng để truy cập các danh mục đa mức - nó đại diện cho container của các đối tượng ChartDataPointLevel. Về cơ bản, nó là một wrapper cho ChartCategoryLevelsManager với các thuộc tính được thêm riêng cho các điểm dữ liệu. Lớp ChartDataPointLevel có hai phương thức: getFormat và getDataLabel cung cấp quyền truy cập vào các cài đặt tương ứng.
Hiển thị Giá trị Điểm Dữ liệu
Hiển thị giá trị của điểm dữ liệu “Leaf 4”:
$dataPoints = $chart->getChartData()->getSeries()->get_Item(0)->getDataPoints();
$dataPoints->get_Item(3)->getDataPointLevels()->get_Item(0)->getLabel()->getDataLabelFormat()->setShowValue(true);
Đặt Nhãn và Màu cho Điểm Dữ liệu
Đặt nhãn dữ liệu “Branch 1” để hiển thị tên series (“Series1”) thay vì tên danh mục. Sau đó đặt màu văn bản thành màu vàng:
$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);
Đặt Màu Nhánh cho Điểm Dữ liệu
Thay đổi màu của nhánh “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();
}
}
Câu hỏi thường gặp
Tôi có thể thay đổi thứ tự (sắp xếp) của các phân đoạn trong Sunburst/Treemap không?
Không. PowerPoint tự động sắp xếp các phân đoạn (thường theo giá trị giảm dần, theo chiều kim đồng hồ). Aspose.Slides phản chiếu hành vi này: bạn không thể thay đổi thứ tự trực tiếp; bạn phải thực hiện bằng cách tiền xử lý dữ liệu.
Chủ đề của bản trình bày ảnh hưởng như thế nào đến màu sắc của các phân đoạn và nhãn?
Màu biểu đồ kế thừa chủ đề/bảng màu của bản trình bày trừ khi bạn tự đặt màu nền/phông chữ. Để có kết quả nhất quán, hãy cố định các màu nền đặc và định dạng văn bản ở các mức cần thiết.
Xuất ra PDF/PNG có giữ nguyên màu nhánh tùy chỉnh và cài đặt nhãn không?
Có. Khi xuất bản trình bày, các cài đặt biểu đồ (màu nền, nhãn) được giữ nguyên trong các định dạng đầu ra vì Aspose.Slides render với định dạng của biểu đồ đã áp dụng.
Tôi có thể tính toán tọa độ thực tế của một nhãn/đối tượng để đặt lớp phủ tùy chỉnh lên trên biểu đồ không?
Có. Sau khi bố cục biểu đồ được xác nhận, giá trị x thực tế và y thực tế có sẵn cho các phần tử (ví dụ, một DataLabel), giúp định vị lớp phủ một cách chính xác.