Formatear gráficos en presentaciones usando Python
Descripción general
Esta guía muestra cómo dar formato a los gráficos de PowerPoint usando Aspose.Slides para Python. Recorre la personalización de los elementos principales del gráfico, como los ejes de categorías y valores, líneas de cuadrícula, etiquetas, títulos, leyendas y ejes secundarios, y demuestra cómo controlar fuentes, formatos numéricos, rellenos, contornos, colores del área del gráfico y la pared trasera, y esquinas redondeadas del gráfico con ejemplos de código concisos y ejecutables. Siguiendo los ejemplos paso a paso, creará una Presentation, añadirá y configurará un gráfico y guardará el resultado en PPTX aplicando ajustes visuales y tipográficos precisos.
Dar formato a los elementos del gráfico
Aspose.Slides para Python permite a los desarrolladores añadir gráficos personalizados a sus diapositivas desde cero. Esta sección explica cómo dar formato a varios elementos del gráfico, incluidos los ejes de categorías y valores.
Aspose.Slides proporciona una API sencilla para gestionar los elementos del gráfico y aplicar formato personalizado:
- Cree una instancia de la clase Presentation.
- Obtenga una referencia a la diapositiva por su índice.
- Añada un gráfico con datos predeterminados del tipo deseado (en este ejemplo,
ChartType.LINE_WITH_MARKERS). - Acceda al eje de valores del gráfico y establezca lo siguiente:
- Establezca el formato de línea para las líneas de cuadrícula principales del eje de valores.
- Establezca el formato de línea para las líneas de cuadrícula menores del eje de valores.
- Establezca el formato numérico para el eje de valores.
- Establezca las unidades mín., máx., principales y menores para el eje de valores.
- Establezca las propiedades de texto para las etiquetas del eje de valores.
- Establezca el título del eje de valores.
- Establezca el formato de línea para el eje de valores.
- Acceda al eje de categorías del gráfico y establezca lo siguiente:
- Establezca el formato de línea para las líneas de cuadrícula principales del eje de categorías.
- Establezca el formato de línea para las líneas de cuadrícula menores del eje de categorías.
- Establezca las propiedades de texto para las etiquetas del eje de categorías.
- Establezca el título del eje de categorías.
- Establezca la posicionamiento de etiquetas para el eje de categorías.
- Establezca el ángulo de rotación para las etiquetas del eje de categorías.
- Acceda a la leyenda del gráfico y establezca sus propiedades de texto.
- Muestre la leyenda del gráfico sin que se superponga al gráfico.
- Acceda al eje de valores secundario del gráfico y establezca lo siguiente:
- Habilite el eje de valores secundario.
- Establezca el formato de línea para el eje de valores secundario.
- Establezca el formato numérico para el eje de valores secundario.
- Establezca las unidades mín., máx., principales y menores para el eje de valores secundario.
- Dibuje la primera serie del gráfico en el eje de valores secundario.
- Establezca el color de relleno de la pared trasera del gráfico.
- Establezca el color de relleno del área de trazado del gráfico.
- Escriba la presentación modificada en un archivo PPTX.
import aspose.slides.charts as charts
import aspose.slides as slides
import aspose.pydrawing as draw
# Instanciar la clase Presentation.
with slides.Presentation() as presentation:
# Acceder a la primera diapositiva.
slide = presentation.slides[0]
# Añadir un gráfico de ejemplo.
chart = slide.shapes.add_chart(charts.ChartType.LINE_WITH_MARKERS, 50, 50, 500, 400)
# Establecer el título del gráfico.
chart.has_title = True
chart.chart_title.add_text_frame_for_overriding("")
chart_title = chart.chart_title.text_frame_for_overriding.paragraphs[0].portions[0]
chart_title.text = "Sample Chart"
chart_title.portion_format.fill_format.fill_type = slides.FillType.SOLID
chart_title.portion_format.fill_format.solid_fill_color.color = draw.Color.gray
chart_title.portion_format.font_height = 20
chart_title.portion_format.font_bold = 1
chart_title.portion_format.font_italic = 1
# Establecer el formato de la línea de cuadrícula principal para el eje de valores.
chart.axes.vertical_axis.major_grid_lines_format.line.fill_format.fill_type = slides.FillType.SOLID
chart.axes.vertical_axis.major_grid_lines_format.line.fill_format.solid_fill_color.color = draw.Color.blue
chart.axes.vertical_axis.major_grid_lines_format.line.width = 5
chart.axes.vertical_axis.major_grid_lines_format.line.dash_style = slides.LineDashStyle.DASH_DOT
# Establecer el formato de la línea de cuadrícula menor para el eje de valores.
chart.axes.vertical_axis.minor_grid_lines_format.line.fill_format.fill_type = slides.FillType.SOLID
chart.axes.vertical_axis.minor_grid_lines_format.line.fill_format.solid_fill_color.color = draw.Color.red
chart.axes.vertical_axis.minor_grid_lines_format.line.width = 3
# Establecer el formato numérico del eje de valores.
chart.axes.vertical_axis.is_number_format_linked_to_source = False
chart.axes.vertical_axis.display_unit = charts.DisplayUnitType.THOUSANDS
chart.axes.vertical_axis.number_format = "0.0%"
# Establecer el máximo, mínimo, unidad principal y unidad menor del eje de valores.
chart.axes.vertical_axis.is_automatic_major_unit = False
chart.axes.vertical_axis.is_automatic_max_value = False
chart.axes.vertical_axis.is_automatic_minor_unit = False
chart.axes.vertical_axis.is_automatic_min_value = False
chart.axes.vertical_axis.max_value = 15
chart.axes.vertical_axis.min_value = -2
chart.axes.vertical_axis.minor_unit = 0.5
chart.axes.vertical_axis.major_unit = 2.0
# Establecer las propiedades de texto del eje de valores.
vertical_axis_portion_format = chart.axes.vertical_axis.text_format.portion_format
vertical_axis_portion_format.font_bold = 1
vertical_axis_portion_format.font_height = 16
vertical_axis_portion_format.font_italic = 1
vertical_axis_portion_format.fill_format.fill_type = slides.FillType.SOLID
vertical_axis_portion_format.fill_format.solid_fill_color.color = draw.Color.dark_green
vertical_axis_portion_format.latin_font = slides.FontData("Times New Roman")
# Establecer el título del eje de valores.
chart.axes.vertical_axis.has_title = True
chart.axes.vertical_axis.title.add_text_frame_for_overriding("")
vertical_axis_title = chart.axes.vertical_axis.title.text_frame_for_overriding.paragraphs[0].portions[0]
vertical_axis_title.text = "Primary Axis"
vertical_axis_title.portion_format.fill_format.fill_type = slides.FillType.SOLID
vertical_axis_title.portion_format.fill_format.solid_fill_color.color = draw.Color.gray
vertical_axis_title.portion_format.font_height = 20
vertical_axis_title.portion_format.font_bold = 1
vertical_axis_title.portion_format.font_italic = 1
# Establecer el formato de la línea de cuadrícula principal para el eje de categorías.
chart.axes.horizontal_axis.major_grid_lines_format.line.fill_format.fill_type = slides.FillType.SOLID
chart.axes.horizontal_axis.major_grid_lines_format.line.fill_format.solid_fill_color.color = draw.Color.green
chart.axes.horizontal_axis.major_grid_lines_format.line.width = 5
# Establecer el formato de la línea de cuadrícula menor para el eje de categorías.
chart.axes.horizontal_axis.minor_grid_lines_format.line.fill_format.fill_type = slides.FillType.SOLID
chart.axes.horizontal_axis.minor_grid_lines_format.line.fill_format.solid_fill_color.color = draw.Color.yellow
chart.axes.horizontal_axis.minor_grid_lines_format.line.width = 3
# Establecer las propiedades de texto del eje de categorías.
horizontal_axis_portion_format = chart.axes.horizontal_axis.text_format.portion_format
horizontal_axis_portion_format.font_bold = 1
horizontal_axis_portion_format.font_height = 16
horizontal_axis_portion_format.font_italic = 1
horizontal_axis_portion_format.fill_format.fill_type = slides.FillType.SOLID
horizontal_axis_portion_format.fill_format.solid_fill_color.color = draw.Color.blue
horizontal_axis_portion_format.latin_font = slides.FontData("Arial")
# Establecer el título del eje de categorías.
chart.axes.horizontal_axis.has_title = True
chart.axes.horizontal_axis.title.add_text_frame_for_overriding("")
horizontal_axis_title = chart.axes.horizontal_axis.title.text_frame_for_overriding.paragraphs[0].portions[0]
horizontal_axis_title.text = "Sample Category"
horizontal_axis_title.portion_format.fill_format.fill_type = slides.FillType.SOLID
horizontal_axis_title.portion_format.fill_format.solid_fill_color.color = draw.Color.gray
horizontal_axis_title.portion_format.font_height = 20
horizontal_axis_title.portion_format.font_bold = 1
horizontal_axis_title.portion_format.font_italic = 1
# Establecer la posición de la etiqueta del eje de categorías.
chart.axes.horizontal_axis.tick_label_position = charts.TickLabelPositionType.LOW
# Establecer el ángulo de rotación de la etiqueta del eje de categorías.
chart.axes.horizontal_axis.tick_label_rotation_angle = 45
# Establecer las propiedades de texto de la leyenda.
legend_portion_format = chart.legend.text_format.portion_format
legend_portion_format.font_bold = 1
legend_portion_format.font_height = 16
legend_portion_format.font_italic = 1
legend_portion_format.fill_format.fill_type = slides.FillType.SOLID
legend_portion_format.fill_format.solid_fill_color.color = draw.Color.dark_red
# Mostrar la leyenda del gráfico superponiéndose al gráfico.
chart.legend.overlay = True
# Establecer el color de la pared trasera del gráfico.
chart.back_wall.thickness = 1
chart.back_wall.format.fill.fill_type = slides.FillType.SOLID
chart.back_wall.format.fill.solid_fill_color.color = draw.Color.orange
chart.floor.format.fill.fill_type = slides.FillType.SOLID
chart.floor.format.fill.solid_fill_color.color = draw.Color.red
# Establecer el color del área de trazado.
chart.plot_area.format.fill.fill_type = slides.FillType.SOLID
chart.plot_area.format.fill.solid_fill_color.color = draw.Color.light_cyan
# Guardar la presentación.
presentation.save("FormattedChart.pptx", slides.export.SaveFormat.PPTX)
Establecer propiedades de fuente del gráfico
Aspose.Slides para Python admite la configuración de propiedades relacionadas con fuentes para los gráficos. Siga los pasos a continuación para configurar las propiedades de fuente del gráfico:
- Instancie un objeto Presentation.
- Añada un gráfico a la diapositiva.
- Establezca la altura de la fuente.
- Guarde la presentación modificada.
A continuación se proporciona un código de ejemplo.
import aspose.slides.charts as charts
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 100, 100, 500, 400)
chart.text_format.portion_format.font_height = 20
chart.chart_data.series[0].labels.default_data_label_format.show_value = True
presentation.save("ChartFontProperties.pptx", slides.export.SaveFormat.PPTX)
Establecer formato numérico
Aspose.Slides para Python ofrece una API sencilla para gestionar los formatos de datos del gráfico:
- Cree una instancia de la clase Presentation.
- Obtenga una referencia a la diapositiva por su índice.
- Añada un gráfico con datos predeterminados de cualquier tipo deseado.
- Establezca un formato numérico predeterminado de los valores disponibles.
- Recorra las celdas de datos del gráfico en cada serie y establezca el formato numérico.
- Guarde la presentación.
- Establezca un formato numérico personalizado.
- Recorra las celdas de datos del gráfico en cada serie y establezca un formato numérico diferente.
- Guarde la presentación.
import aspose.slides.charts as charts
import aspose.slides as slides
# Instanciar la clase Presentation.
with slides.Presentation() as presentation:
# Acceder a la primera diapositiva.
slide = presentation.slides[0]
# Añadir un gráfico de columnas agrupadas predeterminado.
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 50, 50, 500, 400)
# Establecer el formato numérico predefinido.
# Recorrer cada serie del gráfico.
for series in chart.chart_data.series:
# Recorrer cada punto de datos en la serie.
for cell in series.data_points:
# Establecer el formato numérico.
cell.value.as_cell.preset_number_format = 10 # 0.00%
# Guardar la presentación.
presentation.save("PresetNumberFormat.pptx", slides.export.SaveFormat.PPTX)
Los formatos numéricos predeterminados disponibles y sus índices correspondientes se enumeran a continuación.
| 0 | General |
|---|---|
| 1 | 0 |
| 2 | 0.00 |
| 3 | #,##0 |
| 4 | #,##0.00 |
| 5 | $#,##0;$-#,##0 |
| 6 | $#,##0;Red$-#,##0 |
| 7 | $#,##0.00;$-#,##0.00 |
| 8 | $#,##0.00;Red$-#,##0.00 |
| 9 | 0% |
| 10 | 0.00% |
| 11 | 0.00E+00 |
| 12 | # ?/? |
| 13 | # / |
| 14 | m/d/yy |
| 15 | d-mmm-yy |
| 16 | d-mmm |
| 17 | mmm-yy |
| 18 | h:mm AM/PM |
| 19 | h:mm:ss AM/PM |
| 20 | h:mm |
| 21 | h:mm:ss |
| 22 | m/d/yy h:mm |
| 37 | #,##0;-#,##0 |
| 38 | #,##0;Red-#,##0 |
| 39 | #,##0.00;-#,##0.00 |
| 40 | #,##0.00;Red-#,##0.00 |
| 41 | _ * #,##0_ ;_ * “_ ;_ @_ |
| 42 | _ $* #,##0_ ;_ $* “_ ;_ @_ |
| 43 | _ * #,##0.00_ ;_ * “??_ ;_ @_ |
| 44 | _ $* #,##0.00_ ;_ $* “??_ ;_ @_ |
| 45 | mm:ss |
| 46 | h:mm:ss |
| 47 | mm:ss.0 |
| 48 | ##0.0E+00 |
| 49 | @ |
Establecer bordes redondeados para el área del gráfico
Aspose.Slides para Python admite la configuración del área del gráfico mediante la propiedad Chart.has_rounded_corners.
- Instancie un objeto Presentation.
- Añada un gráfico a la diapositiva.
- Establezca el tipo de relleno y el color de relleno del gráfico.
- Establezca la propiedad de esquinas redondeadas a
True. - Guarde la presentación modificada.
A continuación se muestra un ejemplo.
import aspose.slides.charts as charts
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 20, 100, 600, 400)
chart.line_format.fill_format.fill_type = slides.FillType.SOLID
chart.line_format.style = slides.LineStyle.SINGLE
chart.has_rounded_corners = True
presentation.save("RoundedBorders.pptx", slides.export.SaveFormat.PPTX)
Preguntas frecuentes
¿Puedo establecer rellenos semitransparentes para columnas/áreas mientras mantengo el borde opaco?
Sí. La transparencia del relleno y el contorno se configuran por separado. Esto es útil para mejorar la legibilidad de la cuadrícula y los datos en visualizaciones densas.
¿Cómo puedo manejar las etiquetas de datos cuando se superponen?
Reduzca el tamaño de la fuente, desactive componentes de etiqueta no esenciales (por ejemplo, categorías), ajuste el desplazamiento/posición de la etiqueta, muestre etiquetas solo para puntos seleccionados si es necesario, o cambie el formato a “valor + leyenda”.
¿Puedo aplicar rellenos degradados o de patrón a las series?
Sí. Normalmente están disponibles tanto rellenos sólidos como degradados/patrón. En la práctica, utilice degradados con moderación y evite combinaciones que reduzcan el contraste con la cuadrícula y el texto.