Formater les graphiques dans les présentations avec Python

Vue d’ensemble

Ce guide montre comment formater les graphiques PowerPoint à l’aide d’Aspose.Slides pour Python. Il décrit la personnalisation des entités principales du graphique — telles que les axes des catégories et des valeurs, les quadrillages, les libellés, les titres, les légendes et les axes secondaires — et démontre comment contrôler les polices, les formats numériques, les remplissages, les contours, les couleurs de la zone de tracé et du mur arrière, ainsi que les coins arrondis du graphique avec des exemples de code concis et exécutables. En suivant les exemples pas à pas, vous créerez une Presentation, ajouterez et configurerez un graphique, et enregistrerez le résultat au format PPTX tout en appliquant des réglages visuels et typographiques précis.

Formater les éléments du graphique

Aspose.Slides pour Python permet aux développeurs d’ajouter des graphiques personnalisés à leurs diapositives depuis zéro. Cette section explique comment formater divers éléments du graphique, y compris les axes des catégories et des valeurs.

Aspose.Slides propose une API simple pour gérer les éléments du graphique et appliquer un formatage personnalisé :

  1. Créez une instance de la classe Presentation.
  2. Obtenez une référence à la diapositive par son index.
  3. Ajoutez un graphique avec des données par défaut du type souhaité (dans cet exemple, ChartType.LINE_WITH_MARKERS).
  4. Accédez à l’axe des valeurs du graphique et définissez les éléments suivants :
    1. Définissez le format de ligne pour les quadrillages majeurs de l’axe des valeurs.
    2. Définissez le format de ligne pour les quadrillages mineurs de l’axe des valeurs.
    3. Définissez le format numérique pour l’axe des valeurs.
    4. Définissez les unités min, max, majeures et mineures pour l’axe des valeurs.
    5. Définissez les propriétés de texte pour les libellés de l’axe des valeurs.
    6. Définissez le titre de l’axe des valeurs.
    7. Définissez le format de ligne de l’axe des valeurs.
  5. Accédez à l’axe des catégories du graphique et définissez les éléments suivants :
    1. Définissez le format de ligne pour les quadrillages majeurs de l’axe des catégories.
    2. Définissez le format de ligne pour les quadrillages mineurs de l’axe des catégories.
    3. Définissez les propriétés de texte pour les libellés de l’axe des catégories.
    4. Définissez le titre de l’axe des catégories.
    5. Définissez le positionnement des libellés pour l’axe des catégories.
    6. Définissez l’angle de rotation des libellés de l’axe des catégories.
  6. Accédez à la légende du graphique et définissez ses propriétés de texte.
  7. Affichez la légende du graphique sans qu’elle chevauche le graphique.
  8. Accédez à l’axe secondaire des valeurs du graphique et définissez les éléments suivants :
    1. Activez l’axe secondaire des valeurs.
    2. Définissez le format de ligne pour l’axe secondaire des valeurs.
    3. Définissez le format numérique pour l’axe secondaire des valeurs.
    4. Définissez les unités min, max, majeures et mineures pour l’axe secondaire des valeurs.
  9. Tracez la première série du graphique sur l’axe secondaire des valeurs.
  10. Définissez la couleur de remplissage du mur arrière du graphique.
  11. Définissez la couleur de remplissage de la zone de tracé du graphique.
  12. Écrivez la présentation modifiée dans un fichier PPTX.
import aspose.slides.charts as charts
import aspose.slides as slides
import aspose.pydrawing as draw

    # Instancier la classe Presentation.
    with slides.Presentation() as presentation:

        # Accéder à la première diapositive.
        slide = presentation.slides[0]

        # Ajouter un graphique d'exemple.
        chart = slide.shapes.add_chart(charts.ChartType.LINE_WITH_MARKERS, 50, 50, 500, 400)

        # Définir le titre du graphique.
        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

        # Définir le format des quadrillages majeurs pour l'axe des valeurs.
        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

        # Définir le format des quadrillages mineurs pour l'axe des valeurs.
        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

        # Définir le format numérique de l'axe des valeurs.
        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%"

        # Définir le maximum, le minimum, l'unité majeure et l'unité mineure de l'axe des valeurs.
        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

        # Définir les propriétés de texte de l'axe des valeurs.
        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")

        # Définir le titre de l'axe des valeurs.
        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

        # Définir le format des quadrillages majeurs pour l'axe des catégories.
        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

        # Définir le format des quadrillages mineurs pour l'axe des catégories.
        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

        # Définir les propriétés de texte de l'axe des catégories.
        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")

        # Définir le titre de l'axe des catégories.
        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

        # Définir la position des libellés de l'axe des catégories.
        chart.axes.horizontal_axis.tick_label_position = charts.TickLabelPositionType.LOW

        # Définir l'angle de rotation des libellés de l'axe des catégories.
        chart.axes.horizontal_axis.tick_label_rotation_angle = 45

        # Définir les propriétés de texte de la légende.
        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

        # Afficher la légende du graphique qui chevauche le graphique.
        chart.legend.overlay = True
                
        # Définir la couleur du mur arrière du graphique.
        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

        # Définir la couleur de la zone de tracé.
        chart.plot_area.format.fill.fill_type = slides.FillType.SOLID
        chart.plot_area.format.fill.solid_fill_color.color = draw.Color.light_cyan

        # Enregistrer la présentation.
        presentation.save("FormattedChart.pptx", slides.export.SaveFormat.PPTX)

Définir les propriétés de police du graphique

Aspose.Slides pour Python prend en charge la définition des propriétés liées aux polices pour les graphiques. Suivez les étapes ci‑dessous pour configurer les propriétés de police du graphique :

  1. Instanciez un objet Presentation.
  2. Ajoutez un graphique à la diapositive.
  3. Définissez la hauteur de la police.
  4. Enregistrez la présentation modifiée.

Un exemple de code est fourni ci‑dessous.

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)

Définir le format numérique

Aspose.Slides pour Python fournit une API simple pour gérer les formats de données des graphiques :

  1. Créez une instance de la classe Presentation.
  2. Obtenez une référence à la diapositive par son index.
  3. Ajoutez un graphique avec des données par défaut du type souhaité.
  4. Appliquez un format numérique prédéfini parmi les valeurs disponibles.
  5. Parcourez les cellules de données du graphique dans chaque série et définissez le format numérique.
  6. Enregistrez la présentation.
  7. Appliquez un format numérique personnalisé.
  8. Parcourez les cellules de données du graphique dans chaque série et définissez un format différent.
  9. Enregistrez la présentation.
import aspose.slides.charts as charts
import aspose.slides as slides

# Instancier la classe Presentation.
with slides.Presentation() as presentation:
    # Accéder à la première diapositive.
    slide = presentation.slides[0]

    # Ajouter un diagramme à colonnes groupées par défaut.
    chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 50, 50, 500, 400)

    # Définir le format numérique prédéfini.
    # Parcourir chaque série du diagramme.
    for series in chart.chart_data.series:
        # Parcourir chaque point de données dans la série.
        for cell in series.data_points:
            # Définir le format numérique.
            cell.value.as_cell.preset_number_format = 10  # 0.00%

    # Enregistrer la présentation.
    presentation.save("PresetNumberFormat.pptx", slides.export.SaveFormat.PPTX)

Les formats numériques prédéfinis disponibles et leurs indices correspondants sont répertoriés ci‑dessous.

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 @

Définir des bordures arrondies pour la zone du graphique

Aspose.Slides pour Python permet de configurer la zone du graphique à l’aide de la propriété Chart.has_rounded_corners.

  1. Instanciez un objet Presentation.
  2. Ajoutez un graphique à la diapositive.
  3. Définissez le type de remplissage et la couleur de remplissage du graphique.
  4. Réglez la propriété des coins arrondis sur True.
  5. Enregistrez la présentation modifiée.

Un exemple est fourni ci‑dessous.

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)

FAQ

Puis‑je définir des remplissages semi‑transparents pour les colonnes/aires tout en conservant le contour opaque ?

Oui. La transparence du remplissage et le contour sont configurés séparément. Cette approche est utile pour améliorer la lisibilité du quadrillage et des données dans des visualisations denses.

Comment gérer les libellés de données lorsqu’ils se chevauchent ?

Réduisez la taille de la police, désactivez les composants de libellé non essentiels (par exemple, les catégories), ajustez le décalage/position du libellé, n’affichez les libellés que pour les points sélectionnés si nécessaire, ou changez le format en « valeur + légende ».

Puis‑je appliquer des remplissages en dégradé ou en motif aux séries ?

Oui. Les remplissages unis ainsi que les remplissages en dégradé ou en motif sont généralement disponibles. En pratique, utilisez les dégradés avec parcimonie et évitez les combinaisons qui réduisent le contraste avec le quadrillage et le texte.