PHP를 사용하여 Treemap 및 Sunburst 차트의 데이터 포인트 맞춤 설정
소개
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 클래스와 ChartDataPoint::getDataPointLevels 메서드는 Treemap 및 Sunburst 차트의 데이터 포인트를 형식화하는 데 접근을 제공합니다. ChartDataPointLevelsManager는 다중 레벨 카테고리에 접근하기 위해 사용되며 - 이는 ChartDataPointLevel 객체들의 컨테이너를 나타냅니다. 기본적으로 이는 데이터 포인트에 특화된 속성이 추가된 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). 이를 통해 오버레이를 정확히 배치할 수 있습니다.