Personalizar puntos de datos en gráficos Treemap y Sunburst usando PHP
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 Sunburst, Diagrama Sunburst, Gráfico radial, Gráfico circular radial o Gráfico de pastel multinivel). Estos gráficos muestran datos jerárquicos organizados como un árbol, desde las hojas hasta la rama superior. Las hojas se definen mediante los puntos de datos de la serie, y cada nivel de agrupación anidado posterior se define por la categoría correspondiente. Aspose.Slides for PHP via Java permite dar formato a los puntos de datos del gráfico Sunburst y del Treemap .
Este es un gráfico Sunburst, donde los datos de la columna Series1 definen los nodos hoja, mientras que el resto de columnas definen los puntos de datos jerárquicos:
Comencemos añadiendo un nuevo gráfico Sunburst a la presentación:
$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();
}
}
Si es necesario dar formato a los puntos de datos del gráfico, debemos utilizar lo siguiente:
ChartDataPointLevelsManager, ChartDataPointLevel classes and ChartDataPoint::getDataPointLevels method provide access to format data points of Treemap and Sunburst charts. ChartDataPointLevelsManager is used for accessing multi-level categories - it represents the container of ChartDataPointLevel objects. Basically it is a wrapper for ChartCategoryLevelsManager with the properties added specific for data points. ChartDataPointLevel class has two methods: getFormat and getDataLabel which provide access to corresponding settings.
Mostrar el valor de un punto de datos
Mostrar el valor del punto de datos “Leaf 4”:
$dataPoints = $chart->getChartData()->getSeries()->get_Item(0)->getDataPoints();
$dataPoints->get_Item(3)->getDataPointLevels()->get_Item(0)->getLabel()->getDataLabelFormat()->setShowValue(true);
Establecer una etiqueta y color de un punto de datos
Establezca la etiqueta del punto de datos “Branch 1” para que muestre el nombre de la serie (“Series1”) en lugar del nombre de la categoría. A continuación, establezca el color del texto a amarillo:
$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);
Establecer el color de una rama de punto de datos
Cambiar el color de la rama “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();
}
}
Preguntas frecuentes
¿Puedo cambiar el orden (clasificación) de los segmentos en Sunburst/Treemap?
No. PowerPoint ordena los segmentos de forma automática (normalmente por valores descendentes, en sentido horario). Aspose.Slides refleja este comportamiento: no se puede cambiar el orden directamente; se logra preprocesando 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 se establezcan explícitamente rellenos/fuentes. Para obtener resultados consistentes, bloquee los rellenos sólidos y el formato de texto en los niveles requeridos.
¿La exportación a PDF/PNG preservará los colores de rama personalizados y la configuración de etiquetas?
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 del gráfico aplicado.
¿Puedo calcular las coordenadas reales de una etiqueta/elemento para colocar una superposición personalizada sobre el gráfico?
Sí. Después de validar el diseño del gráfico, están disponibles los valores reales de x y y para los elementos (por ejemplo, una DataLabel), lo que ayuda a posicionar con precisión las superposiciones.