Formatage des graphiques de présentation en .NET

Formater les entités du graphique

Aspose.Slides for .NET permet aux développeurs d’ajouter des graphiques personnalisés à leurs diapositives à partir de zéro. Cet article explique comment formater différentes entités de graphique, y compris les axes de catégorie et de valeur.

Aspose.Slides for .NET fournit une API simple pour gérer différentes entités de graphique et les formater à l’aide de valeurs personnalisées :

  1. Créez une instance de la classe Presentation.
  2. Obtenez une référence à une diapositive par son indice.
  3. Ajoutez un graphique avec des données par défaut ainsi que le type souhaité (dans cet exemple nous utiliserons ChartType.LineWithMarkers).
  4. Accédez à l’axe des valeurs du graphique et définissez les propriétés suivantes :
    1. Définir le format de ligne pour les lignes de la grille principale de l’axe des valeurs
    2. Définir le format de ligne pour les lignes de la grille secondaire de l’axe des valeurs
    3. Définir le format de nombre pour l’axe des valeurs
    4. Définir les unités Min, Max, principales et secondaires pour l’axe des valeurs
    5. Définir les propriétés de texte pour les données de l’axe des valeurs
    6. Définir le titre de l’axe des valeurs
    7. Définir le format de ligne de l’axe des valeurs
  5. Accédez à l’axe des catégories du graphique et définissez les propriétés suivantes :
    1. Définir le format de ligne pour les lignes de la grille principale de l’axe des catégories
    2. Définir le format de ligne pour les lignes de la grille secondaire de l’axe des catégories
    3. Définir les propriétés de texte pour les données de l’axe des catégories
    4. Définir le titre de l’axe des catégories
    5. Définir le positionnement des étiquettes pour l’axe des catégories
    6. Définir l’angle de rotation des étiquettes de l’axe des catégories
  6. Accédez à la légende du graphique et définissez les propriétés de texte correspondantes
  7. Affichez les légendes du graphique sans chevaucher le graphique
  8. Accédez à l’axe des valeurs secondaire du graphique et définissez les propriétés suivantes :
    1. Activez l’axe des valeurs secondaire
    2. Définir le format de ligne pour l’axe des valeurs secondaire
    3. Définir le format de nombre pour l’axe des valeurs secondaire
    4. Définir les unités Min, Max, principales et secondaires pour l’axe des valeurs secondaire
  9. Tracez maintenant la première série de graphique sur l’axe des valeurs secondaire
  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. Enregistrez la présentation modifiée dans un fichier PPTX
// Instanciation de la présentation// Instanciation de la présentation
Presentation pres = new Presentation();

// Accessing the first slide
ISlide slide = pres.Slides[0];

// Adding the sample chart
IChart chart = slide.Shapes.AddChart(ChartType.LineWithMarkers, 50, 50, 500, 400);

// Setting Chart Titile
chart.HasTitle = true;
chart.ChartTitle.AddTextFrameForOverriding("");
IPortion chartTitle = chart.ChartTitle.TextFrameForOverriding.Paragraphs[0].Portions[0];
chartTitle.Text = "Sample Chart";
chartTitle.PortionFormat.FillFormat.FillType = FillType.Solid;
chartTitle.PortionFormat.FillFormat.SolidFillColor.Color = Color.Gray;
chartTitle.PortionFormat.FontHeight = 20;
chartTitle.PortionFormat.FontBold = NullableBool.True;
chartTitle.PortionFormat.FontItalic = NullableBool.True;

// Setting Major grid lines format for value axis
chart.Axes.VerticalAxis.MajorGridLinesFormat.Line.FillFormat.FillType = FillType.Solid;
chart.Axes.VerticalAxis.MajorGridLinesFormat.Line.FillFormat.SolidFillColor.Color = Color.Blue;
chart.Axes.VerticalAxis.MajorGridLinesFormat.Line.Width = 5;
chart.Axes.VerticalAxis.MajorGridLinesFormat.Line.DashStyle = LineDashStyle.DashDot;

// Setting Minor grid lines format for value axis
chart.Axes.VerticalAxis.MinorGridLinesFormat.Line.FillFormat.FillType = FillType.Solid;
chart.Axes.VerticalAxis.MinorGridLinesFormat.Line.FillFormat.SolidFillColor.Color = Color.Red;
chart.Axes.VerticalAxis.MinorGridLinesFormat.Line.Width = 3;

// Setting value axis number format
chart.Axes.VerticalAxis.IsNumberFormatLinkedToSource = false;
chart.Axes.VerticalAxis.DisplayUnit = DisplayUnitType.Thousands;
chart.Axes.VerticalAxis.NumberFormat = "0.0%";

// Setting chart maximum, minimum values
chart.Axes.VerticalAxis.IsAutomaticMajorUnit = false;
chart.Axes.VerticalAxis.IsAutomaticMaxValue = false;
chart.Axes.VerticalAxis.IsAutomaticMinorUnit = false;
chart.Axes.VerticalAxis.IsAutomaticMinValue = false;

chart.Axes.VerticalAxis.MaxValue = 15f;
chart.Axes.VerticalAxis.MinValue = -2f;
chart.Axes.VerticalAxis.MinorUnit = 0.5f;
chart.Axes.VerticalAxis.MajorUnit = 2.0f;

// Setting Value Axis Text Properties
IChartPortionFormat txtVal = chart.Axes.VerticalAxis.TextFormat.PortionFormat;
txtVal.FontBold = NullableBool.True;
txtVal.FontHeight = 16;
txtVal.FontItalic = NullableBool.True;
txtVal.FillFormat.FillType = FillType.Solid; ;
txtVal.FillFormat.SolidFillColor.Color = Color.DarkGreen;
txtVal.LatinFont = new FontData("Times New Roman");

// Setting value axis title
chart.Axes.VerticalAxis.HasTitle = true;
chart.Axes.VerticalAxis.Title.AddTextFrameForOverriding("");
IPortion valtitle = chart.Axes.VerticalAxis.Title.TextFrameForOverriding.Paragraphs[0].Portions[0];
valtitle.Text = "Primary Axis";
valtitle.PortionFormat.FillFormat.FillType = FillType.Solid;
valtitle.PortionFormat.FillFormat.SolidFillColor.Color = Color.Gray;
valtitle.PortionFormat.FontHeight = 20;
valtitle.PortionFormat.FontBold = NullableBool.True;
valtitle.PortionFormat.FontItalic = NullableBool.True;

// Setting value axis line format : Now Obselete
// chart.Axes.VerticalAxis.aVerticalAxis.l.AxisLine.Width = 10;
// chart.Axes.VerticalAxis.AxisLine.FillFormat.FillType = FillType.Solid;
// Chart.Axes.VerticalAxis.AxisLine.FillFormat.SolidFillColor.Color = Color.Red;

// Setting Major grid lines format for Category axis
chart.Axes.HorizontalAxis.MajorGridLinesFormat.Line.FillFormat.FillType = FillType.Solid;
chart.Axes.HorizontalAxis.MajorGridLinesFormat.Line.FillFormat.SolidFillColor.Color = Color.Green;
chart.Axes.HorizontalAxis.MajorGridLinesFormat.Line.Width = 5;

// Setting Minor grid lines format for Category axis
chart.Axes.HorizontalAxis.MinorGridLinesFormat.Line.FillFormat.FillType = FillType.Solid;
chart.Axes.HorizontalAxis.MinorGridLinesFormat.Line.FillFormat.SolidFillColor.Color = Color.Yellow;
chart.Axes.HorizontalAxis.MinorGridLinesFormat.Line.Width = 3;

// Setting Category Axis Text Properties
IChartPortionFormat txtCat = chart.Axes.HorizontalAxis.TextFormat.PortionFormat;
txtCat.FontBold = NullableBool.True;
txtCat.FontHeight = 16;
txtCat.FontItalic = NullableBool.True;
txtCat.FillFormat.FillType = FillType.Solid; ;
txtCat.FillFormat.SolidFillColor.Color = Color.Blue;
txtCat.LatinFont = new FontData("Arial");

// Setting Category Titile
chart.Axes.HorizontalAxis.HasTitle = true;
chart.Axes.HorizontalAxis.Title.AddTextFrameForOverriding("");

IPortion catTitle = chart.Axes.HorizontalAxis.Title.TextFrameForOverriding.Paragraphs[0].Portions[0];
catTitle.Text = "Sample Category";
catTitle.PortionFormat.FillFormat.FillType = FillType.Solid;
catTitle.PortionFormat.FillFormat.SolidFillColor.Color = Color.Gray;
catTitle.PortionFormat.FontHeight = 20;
catTitle.PortionFormat.FontBold = NullableBool.True;
catTitle.PortionFormat.FontItalic = NullableBool.True;

// Setting category axis lable position
chart.Axes.HorizontalAxis.TickLabelPosition = TickLabelPositionType.Low;

// Setting category axis lable rotation angle
chart.Axes.HorizontalAxis.TickLabelRotationAngle = 45;

// Setting Legends Text Properties
IChartPortionFormat txtleg = chart.Legend.TextFormat.PortionFormat;
txtleg.FontBold = NullableBool.True;
txtleg.FontHeight = 16;
txtleg.FontItalic = NullableBool.True;
txtleg.FillFormat.FillType = FillType.Solid; ;
txtleg.FillFormat.SolidFillColor.Color = Color.DarkRed;

// Set show chart legends without overlapping chart
chart.Legend.Overlay = true;
            
// Ploting first series on secondary value axis
// Chart.ChartData.Series[0].PlotOnSecondAxis = true;

// Setting chart back wall color
chart.BackWall.Thickness = 1;
chart.BackWall.Format.Fill.FillType = FillType.Solid;
chart.BackWall.Format.Fill.SolidFillColor.Color = Color.Orange;

chart.Floor.Format.Fill.FillType = FillType.Solid;
chart.Floor.Format.Fill.SolidFillColor.Color = Color.Red;
// Setting Plot area color
chart.PlotArea.Format.Fill.FillType = FillType.Solid;
chart.PlotArea.Format.Fill.SolidFillColor.Color = Color.LightCyan;

// Save Presentation
pres.Save("FormattedChart_out.pptx", SaveFormat.Pptx);

Définir les propriétés de police pour un graphique

Aspose.Slides for .NET fournit la prise en charge de la définition des propriétés liées à la police pour le graphique. Veuillez suivre les étapes ci‑dessous pour définir les propriétés de police du graphique.

  • Instanciez l’objet de la classe Presentation.
  • Ajoutez un graphique sur la diapositive.
  • Définissez la hauteur de la police.
  • Enregistrez la présentation modifiée.

Un exemple d’échantillon est donné ci‑dessous.

using (Presentation pres = new Presentation())
{               
    IChart chart = pres.Slides[0].Shapes.AddChart(ChartType.ClusteredColumn, 100, 100, 500, 400);
    chart.TextFormat.PortionFormat.FontHeight = 20;
    chart.ChartData.Series[0].Labels.DefaultDataLabelFormat.ShowValue = true;
    pres.Save("FontPropertiesForChart.pptx", SaveFormat.Pptx);
}

Définir le format numérique

Aspose.Slides for .NET fournit une API simple pour gérer le format des données de graphique :

  1. Créez une instance de la classe Presentation.
  2. Obtenez une référence à une diapositive par son indice.
  3. Ajoutez un graphique avec des données par défaut ainsi que le type souhaité (cet exemple utilise ChartType.ClusteredColumn).
  4. Définissez le format numérique prédéfini parmi les valeurs prédéfinies possibles.
  5. Parcourez chaque cellule de données du graphique dans chaque série et définissez le format numérique des données du graphique.
  6. Enregistrez la présentation.
  7. Définissez le format numérique personnalisé.
  8. Parcourez chaque cellule de données du graphique dans chaque série et définissez un format numérique différent pour les données du graphique.
  9. Enregistrez la présentation.
// Instancier la présentation// Instancier la présentation
Presentation pres = new Presentation();

// Accéder à la première diapositive de la présentation
ISlide slide = pres.Slides[0];

// Ajouter un graphique à colonnes groupées par défaut
IChart chart = slide.Shapes.AddChart(ChartType.ClusteredColumn, 50, 50, 500, 400);

// Accéder à la collection des séries du graphique
IChartSeriesCollection series = chart.ChartData.Series;

// Définir le format numérique prédéfini
// Parcourir chaque série du graphique
foreach (ChartSeries ser in series)
{
    // Parcourir chaque cellule de données dans la série
    foreach (IChartDataPoint cell in ser.DataPoints)
    {
        // Définir le format numérique
        cell.Value.AsCell.PresetNumberFormat = 10; //0.00%
    }
}

// Enregistrer la présentation
pres.Save("PresetNumberFormat_out.pptx", SaveFormat.Pptx);
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 les coins arrondis de la zone du graphique

Aspose.Slides for .NET offre la prise en charge de la configuration de la zone du graphique. Les propriétés IChart.HasRoundedCorners et Chart.HasRoundedCorners ont été ajoutées dans Aspose.Slides.

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

Un exemple d’échantillon est donné ci‑dessous.

using (Presentation presentation = new Presentation())
{
	ISlide slide = presentation.Slides[0];
	IChart chart = slide.Shapes.AddChart(ChartType.ClusteredColumn, 20, 100, 600, 400);
	chart.LineFormat.FillFormat.FillType = FillType.Solid;
	chart.LineFormat.Style = LineStyle.Single;
	chart.HasRoundedCorners = true;

	presentation.Save("out.pptx", Aspose.Slides.Export.SaveFormat.Pptx);
}

FAQ

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

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

Comment gérer les étiquettes de données lorsqu’elles se chevauchent ?

Réduisez la taille de la police, désactivez les composants d’étiquette non essentiels (par exemple, les catégories), définissez le décalage/la position de l’étiquette, affichez les étiquettes uniquement pour les points sélectionnés si nécessaire, ou passez au format « valeur + légende ».

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

Oui. Les remplissages plein et en dégradé/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 la grille et le texte.