Personalizar Pontos de Dados em Gráficos Treemap e Sunburst Usando PHP
Introdução
Entre outros tipos de gráficos do PowerPoint, existem dois tipos “hierárquicos” – Treemap e Sunburst (chart também conhecido como Gráfico Sunburst, Diagrama Sunburst, Gráfico Radial, Gráfico Radial ou Gráfico de Pizza Multinível). Esses gráficos exibem dados hierárquicos organizados como uma árvore – das folhas até o topo do ramo. As folhas são definidas pelos pontos de dados da série, e cada nível subsequente de agrupamento aninhado é definido pela categoria correspondente. Aspose.Slides for PHP via Java permite formatar pontos de dados do Gráfico Sunburst e Treemap .
Eis um Gráfico Sunburst, onde os dados na coluna Series1 definem os nós folha, enquanto as demais colunas definem pontos de dados hierárquicos:
Vamos começar adicionando um novo gráfico Sunburst à apresentação:
$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();
}
}
Se for necessário formatar os pontos de dados do gráfico, devemos usar o seguinte:
ChartDataPointLevelsManager, ChartDataPointLevel classes e ChartDataPoint::getDataPointLevels method fornecem acesso para formatar pontos de dados de gráficos Treemap e Sunburst. ChartDataPointLevelsManager é usado para acessar categorias de múltiplos níveis – representa o contêiner de ChartDataPointLevel objetos. Basicamente é um wrapper para ChartCategoryLevelsManager com as propriedades adicionadas específicas para pontos de dados. A classe ChartDataPointLevel tem dois métodos: getFormat e getDataLabel que fornecem acesso às configurações correspondentes.
Exibir Valor de um Ponto de Dados
Mostrar o valor do ponto de dados “Leaf 4”:
$dataPoints = $chart->getChartData()->getSeries()->get_Item(0)->getDataPoints();
$dataPoints->get_Item(3)->getDataPointLevels()->get_Item(0)->getLabel()->getDataLabelFormat()->setShowValue(true);
Definir Rótulo e Cor de um Ponto de Dados
Defina o rótulo de dados “Branch 1” para exibir o nome da série (“Series1”) ao invés do nome da categoria. Em seguida, defina a cor do texto para amarelo:
$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);
Definir Cor de Ramo de um Ponto de Dados
Alterar a cor do ramo “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();
}
}
Perguntas Frequentes
Posso mudar a ordem (classificação) dos segmentos em Sunburst/Treemap?
Não. O PowerPoint classifica os segmentos automaticamente (normalmente por valores decrescentes, no sentido horário). O Aspose.Slides replica esse comportamento: não é possível alterar a ordem diretamente; isso é feito pré‑processando os dados.
Como o tema da apresentação afeta as cores dos segmentos e rótulos?
As cores dos gráficos herdam o tema/paleta da apresentação, a menos que você defina explicitamente preenchimentos/fontes. Para resultados consistentes, fixe preenchimentos sólidos e formatação de texto nos níveis necessários.
A exportação para PDF/PNG preservará cores de ramos personalizadas e configurações de rótulos?
Sim. Ao exportar a apresentação, as configurações do gráfico (preenchimentos, rótulos) são preservadas nos formatos de saída porque o Aspose.Slides renderiza com a formatação do gráfico aplicada.
Posso calcular as coordenadas reais de um rótulo/elemento para posicionamento de sobreposição personalizada sobre o gráfico?
Sim. Após a disposição do gráfico ser validada, os valores reais de x e y ficam disponíveis para os elementos (por exemplo, um DataLabel), o que auxilia no posicionamento preciso das sobreposições.