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:
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);
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);
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();
}
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.