Personalizar Pontos de Dados em Gráficos Treemap e Sunburst no Android

Introdução

Entre outros tipos de gráficos do PowerPoint, existem dois tipos “hierárquicos” – Treemap e Sunburst (chart (também conhecido como Sunburst Graph, Sunburst Diagram, Gráfico Radial, Gráfico Radial ou Gráfico de Pizza de Níveis Múltiplos)). 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 de agrupamento aninhado subsequente é definido pela categoria correspondente. Aspose.Slides for Android via Java permite formatar pontos de dados dos gráficos Sunburst e Treemap em Java.

Aqui está um gráfico Sunburst, onde os dados na coluna Series1 definem os nós folha, enquanto as outras colunas definem pontos de dados hierárquicos:

todo:image_alt_text

Vamos começar adicionando um novo gráfico Sunburst à apresentação:

Presentation pres = new Presentation();
try {
    IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.Sunburst, 100, 100, 450, 400);

    // ...
} finally {
    if (pres != null) pres.dispose();
}

Se houver necessidade de formatar os pontos de dados do gráfico, devemos usar o seguinte:

IChartDataPointLevelsManager, IChartDataPointLevel classes e o método IChartDataPoint.getDataPointLevels fornecem acesso para formatar os pontos de dados dos gráficos Treemap e Sunburst. IChartDataPointLevelsManager é usado para acessar categorias de múltiplos níveis – ele representa o contêiner de objetos IChartDataPointLevel. Basicamente, ele é um wrapper para IChartCategoryLevelsManager com propriedades adicionadas específicas para pontos de dados. A classe IChartDataPointLevel possui dois métodos: getFormat e getDataLabel que fornecem acesso às configurações correspondentes.

Mostrar o Valor de um Ponto de Dados

Mostrar o valor do ponto de dados “Leaf 4”:

IChartDataPointCollection dataPoints = chart.getChartData().getSeries().get_Item(0).getDataPoints();
dataPoints.get_Item(3).getDataPointLevels().get_Item(0).getLabel().getDataLabelFormat().setShowValue(true);

todo:image_alt_text

Definir Rótulo e Cor de um Ponto de Dados

Defina o rótulo de dados de “Branch 1” para exibir o nome da série (“Series1”) em vez do nome da categoria. Em seguida, defina a cor do texto para amarelo:

IDataLabel 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(Color.YELLOW);

todo:image_alt_text

Definir a Cor do Ramo do Ponto de Dados

Alterar a cor do ramo “Steam 4”:

Presentation pres = new Presentation();
try {
    IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.Sunburst, 100, 100, 450, 400);

    IChartDataPointCollection dataPoints = chart.getChartData().getSeries().get_Item(0).getDataPoints();

    IChartDataPointLevel stem4branch = dataPoints.get_Item(9).getDataPointLevels().get_Item(1);

    stem4branch.getFormat().getFill().setFillType(FillType.Solid);
    stem4branch.getFormat().getFill().getSolidFillColor().setColor(Color.RED);

    pres.save("pres.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

todo:image_alt_text

FAQ

Posso alterar a ordem (classificação) dos segmentos em Sunburst/Treemap?

Não. O PowerPoint ordena os segmentos automaticamente (geralmente por valores decrescentes, no sentido horário). O Aspose.Slides reproduz esse comportamento: não é possível alterar a ordem diretamente; você deve fazê-lo 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 ou fontes. Para resultados consistentes, fixe preenchimentos sólidos e formatação de texto nos níveis necessários.

A exportação para PDF/PNG preserva cores de ramo personalizadas e configurações de rótulo?

Sim. Ao exportar a apresentação, as configurações do gráfico (preenchimentos, rótulos) são preservadas nos formatos de saída, pois 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 de sobreposições.