Personalizar puntos de datos en gráficos Treemap y Sunburst en Android

Entre los demás tipos de gráficos de PowerPoint, existen dos tipos “jerárquicos”: el gráfico Treemap y el gráfico Sunburst (también conocido como Gráfico de Sunburst, Diagrama Sunburst, Gráfico radial, Diagrama radial o Gráfico de pastel multinivel). Estos gráficos muestran datos jerárquicos organizados como un árbol, desde las hojas hasta la parte superior de la rama. Las hojas se definen mediante los puntos de datos de la serie, y cada nivel de agrupación anidado posterior se define mediante la categoría correspondiente. Aspose.Slides for Android via Java permite formatear los puntos de datos del gráfico Sunburst y Treemap en Java.

Aquí hay un gráfico Sunburst, donde los datos en la columna Series1 definen los nodos hoja, mientras que las demás columnas definen los puntos de datos jerárquicos:

todo:image_alt_text

Empecemos añadiendo un nuevo gráfico Sunburst a la presentación:

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

Si es necesario formatear los puntos de datos del gráfico, debemos usar lo siguiente:

IChartDataPointLevelsManager, IChartDataPointLevel clases y IChartDataPoint.getDataPointLevels método proporcionan acceso a formatear los puntos de datos de los gráficos Treemap y Sunburst. IChartDataPointLevelsManager se utiliza para acceder a categorías multilínea - representa el contenedor de IChartDataPointLevel objetos. Básicamente es un contenedor para IChartCategoryLevelsManager con las propiedades añadidas específicas para los puntos de datos. La clase IChartDataPointLevel tiene dos métodos: getFormat y getDataLabel que proporcionan acceso a la configuración correspondiente.

Mostrar el valor de un punto de datos

Mostrar el valor del punto de datos “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

Establecer la etiqueta y el color de un punto de datos

Establecer la etiqueta del dato “Branch 1” para que muestre el nombre de la serie (“Series1”) en lugar del nombre de la categoría. Luego establecer el color del texto a amarillo:

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

Establecer el color de la rama de un punto de datos

Cambiar el color de la rama “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

¿Puedo cambiar el orden (clasificación) de los segmentos en Sunburst/Treemap?

No. PowerPoint ordena los segmentos automáticamente (normalmente por valores descendentes, en sentido horario). Aspose.Slides refleja este comportamiento: no se puede cambiar el orden directamente; se logra mediante el pre-procesamiento de los datos.

¿Cómo afecta el tema de la presentación a los colores de los segmentos y las etiquetas?

Los colores del gráfico heredan el tema/paleta de la presentación a menos que establezca explícitamente rellenos/fuentes. Para obtener resultados coherentes, fije rellenos sólidos y formato de texto en los niveles requeridos.

¿Se conservarán los colores de rama personalizados y la configuración de etiquetas al exportar a PDF/PNG?

Sí. Al exportar la presentación, la configuración del gráfico (rellenos, etiquetas) se conserva en los formatos de salida porque Aspose.Slides renderiza con el formato aplicado al gráfico.

¿Puedo calcular las coordenadas reales de una etiqueta/elemento para colocar una superposición personalizada sobre el gráfico?

Sí. Después de que se valida el diseño del gráfico, las coordenadas x y y reales están disponibles para los elementos (por ejemplo, una DataLabel), lo que ayuda a posicionar con precisión las superposiciones.