Gérer les séries de graphiques en C#

Vue d’ensemble

Cet article décrit le rôle de ChartSeries dans Aspose.Slides pour .NET, en se concentrant sur la façon dont les données sont structurées et visualisées dans les présentations. Ces objets fournissent les éléments fondamentaux qui définissent les ensembles individuels de points de données, de catégories et de paramètres d’apparence dans un graphique. En travaillant avec ChartSeries, les développeurs peuvent intégrer de manière transparente les sources de données sous‑jacentes et garder le contrôle total sur la façon dont l’information est affichée, ce qui donne des présentations dynamiques et pilotées par les données, capables de transmettre clairement des analyses et des insights.

Une série est une ligne ou une colonne de nombres tracés dans un graphique.

chart-series-powerpoint

Définir le chevauchement des séries du graphique

La propriété IChartSeriesOverlap contrôle la manière dont les barres et les colonnes se chevauchent dans un graphique 2D en spécifiant une plage de -100 à 100. Étant donné que cette propriété est associée au groupe de séries plutôt qu’à chaque série de graphique, elle est en lecture seule au niveau de la série. Pour configurer les valeurs de chevauchement, utilisez la propriété ParentSeriesGroup.Overlap en lecture/écriture, qui applique le chevauchement spécifié à toutes les séries de ce groupe.

Voici un exemple C# qui montre comment créer une présentation, ajouter un graphique à colonnes groupées, accéder à la première série du graphique, configurer le paramètre de chevauchement, puis enregistrer le résultat dans un fichier PPTX :

sbyte overlap = 30;

using (Presentation presentation = new Presentation())
{
    ISlide slide = presentation.Slides[0];

    // Ajouter un graphique à colonnes groupées avec des données par défaut.
    IChart chart = slide.Shapes.AddChart(ChartType.ClusteredColumn, 20, 20, 500, 200);

    IChartSeries series = chart.ChartData.Series[0];
    if (series.Overlap == 0)
    {
        // Définir le chevauchement des séries.
        series.ParentSeriesGroup.Overlap = overlap;
    }

    // Enregistrer le fichier de présentation sur le disque.
    presentation.Save("series_overlap.pptx", SaveFormat.Pptx);
}

Le résultat :

The series overlap

Modifier la couleur de remplissage des séries

Aspose.Slides facilite la personnalisation des couleurs de remplissage des séries de graphiques, vous permettant de mettre en évidence des points de données spécifiques et de créer des graphiques visuellement attrayants. Cela s’effectue via l’objet IFormat, qui prend en charge différents types de remplissage, configurations de couleur et autres options de style avancées. Après avoir ajouté un graphique à une diapositive et accédé à la série souhaitée, il suffit d’obtenir la série et d’appliquer la couleur de remplissage appropriée. En plus des remplissages unis, vous pouvez également exploiter des remplissages en dégradé ou en motif pour plus de flexibilité de conception. Une fois les couleurs définies selon vos besoins, enregistrez la présentation pour finaliser le rendu mis à jour.

L’exemple de code C# suivant montre comment changer la couleur de la première série :

Color seriesColor = Color.Blue;

using (Presentation presentation = new Presentation())
{
    ISlide slide = presentation.Slides[0];

    // Ajouter un graphique à colonnes groupées avec des données par défaut.
    IChart chart = slide.Shapes.AddChart(ChartType.ClusteredColumn, 20, 20, 500, 200);

    // Définir la couleur de la première série.
    IChartSeries series = chart.ChartData.Series[0];
    series.Format.Fill.FillType = FillType.Solid;
    series.Format.Fill.SolidFillColor.Color = seriesColor;

    // Enregistrer le fichier de présentation sur le disque.
    presentation.Save("series_color.pptx", SaveFormat.Pptx);
}

Le résultat :

The color of the series

Modifier le nom de la série

Aspose.Slides offre un moyen simple de modifier les noms des séries de graphiques, facilitant ainsi l’étiquetage des données de façon claire et significative. En accédant à la cellule de feuille de calcul correspondante dans les données du graphique, les développeurs peuvent personnaliser la présentation des données. Cette modification est particulièrement utile lorsque les noms de séries doivent être mis à jour ou clarifiés en fonction du contexte des données. Après avoir renommé la série, la présentation peut être enregistrée pour conserver les changements.

Voici un extrait de code C# illustrant ce processus en action.

string seriesName = "New name";

using (Presentation presentation = new Presentation())
{
    ISlide slide = presentation.Slides[0];

    // Ajouter un graphique à colonnes groupées avec des données par défaut.
    IChart chart = slide.Shapes.AddChart(ChartType.ClusteredColumn, 20, 20, 500, 200);

    // Définir le nom de la première série.
    IChartDataCell seriesCell = chart.ChartData.ChartDataWorkbook.GetCell(0, 0, 1);
    seriesCell.Value = seriesName;

    // Enregistrer le fichier de présentation sur le disque.
    presentation.Save("series_name.pptx", SaveFormat.Pptx);
}

L’extrait de code C# suivant montre une façon alternative de changer le nom de la série :

string seriesName = "New name";

using (Presentation presentation = new Presentation())
{
    ISlide slide = presentation.Slides[0];

    // Ajouter un graphique à colonnes groupées avec des données par défaut.
    IChart chart = slide.Shapes.AddChart(ChartType.ClusteredColumn, 20, 20, 500, 200);

    // Définir le nom de la première série.
    IChartSeries series = chart.ChartData.Series[0];
    series.Name.AsCells[0].Value = seriesName;

    // Enregistrer le fichier de présentation sur le disque.
    presentation.Save("series_name.pptx", SaveFormat.Pptx);
}

Le résultat :

The series name

Obtenir la couleur de remplissage automatique de la série

Aspose.Slides pour .NET vous permet d’obtenir la couleur de remplissage automatique des séries de graphiques dans une zone de tracé. Après avoir créé une instance de la classe Presentation, vous pouvez obtenir une référence à la diapositive souhaitée par index, puis ajouter un graphique en utilisant le type de votre choix (par exemple ChartType.ClusteredColumn). En accédant aux séries du graphique, vous pouvez récupérer la couleur de remplissage automatique.

Le code C# ci‑dessous montre ce processus en détail.

using (Presentation presentation = new Presentation())
{
    ISlide slide = presentation.Slides[0];

    // Ajouter un graphique à colonnes groupées avec des données par défaut.
    IChart chart = slide.Shapes.AddChart(ChartType.ClusteredColumn, 20, 20, 500, 200);

    for (int i = 0; i < chart.ChartData.Series.Count; i++)
    {
        // Obtenir la couleur de remplissage de la série.
        Color color = chart.ChartData.Series[i].GetAutomaticSeriesColor();
        Console.WriteLine($"Series {i} color: {color.Name}");
    }
}

Sortie :

Series 0 color: ff4f81bd
Series 1 color: ffc0504d
Series 2 color: ff9bbb59

Définir la couleur de remplissage inversée pour les séries du graphique

Lorsque votre série de données contient à la fois des valeurs positives et négatives, appliquer la même couleur à chaque colonne ou barre peut rendre le graphique difficile à lire. Aspose.Slides pour .NET vous permet d’attribuer une couleur de remplissage inversée — un remplissage distinct appliqué automatiquement aux points de données situés en dessous de zéro — de sorte que les valeurs négatives se démarquent immédiatement. Dans cette section, vous apprendrez à activer cette option, choisir une couleur appropriée et enregistrer la présentation mise à jour.

L’exemple de code suivant montre l’opération :

Color inverColor = Color.Red;

using (Presentation presentation = new Presentation())
{
    ISlide slide = presentation.Slides[0];

    IChart chart = slide.Shapes.AddChart(ChartType.ClusteredColumn, 20, 20, 500, 200);
    IChartDataWorkbook workBook = chart.ChartData.ChartDataWorkbook;

    chart.ChartData.Series.Clear();
    chart.ChartData.Categories.Clear();

    // Ajouter de nouvelles catégories.
    chart.ChartData.Categories.Add(workBook.GetCell(0, 1, 0, "Category 1"));
    chart.ChartData.Categories.Add(workBook.GetCell(0, 2, 0, "Category 2"));
    chart.ChartData.Categories.Add(workBook.GetCell(0, 3, 0, "Category 3"));

    // Ajouter une nouvelle série.
    IChartSeries series = chart.ChartData.Series.Add(workBook.GetCell(0, 0, 1, "Series 1"), chart.Type);

    // Remplir les données de la série.
    series.DataPoints.AddDataPointForBarSeries(workBook.GetCell(0, 1, 1, -20));
    series.DataPoints.AddDataPointForBarSeries(workBook.GetCell(0, 2, 1, 50));
    series.DataPoints.AddDataPointForBarSeries(workBook.GetCell(0, 3, 1, -30));

    // Définir les paramètres de couleur pour la série.
    var seriesColor = series.GetAutomaticSeriesColor();
    series.InvertIfNegative = true;
    series.Format.Fill.FillType = FillType.Solid;
    series.Format.Fill.SolidFillColor.Color = seriesColor;
    series.InvertedSolidFillColor.Color = inverColor;

    presentation.Save("inverted_solid_fill_color.pptx", SaveFormat.Pptx);
}

Le résultat :

The inverted solid fill color

Vous pouvez inverser la couleur de remplissage pour un seul point de données plutôt que pour l’ensemble de la série. Il suffit d’accéder au IChartDataPoint souhaité et de définir sa propriété InvertIfNegative sur true.

L’exemple de code suivant montre comment procéder :

using (Presentation presentation = new Presentation())
{
    ISlide slide = presentation.Slides[0];

    IChart chart = slide.Shapes.AddChart(ChartType.ClusteredColumn, 20, 20, 500, 200, true);

    chart.ChartData.Series.Clear();
    IChartSeries series = chart.ChartData.Series.Add(chart.ChartData.ChartDataWorkbook.GetCell(0, "B1"), chart.Type);

    series.DataPoints.AddDataPointForBarSeries(chart.ChartData.ChartDataWorkbook.GetCell(0, "B2", -5));
    series.DataPoints.AddDataPointForBarSeries(chart.ChartData.ChartDataWorkbook.GetCell(0, "B3", 3));
    series.DataPoints.AddDataPointForBarSeries(chart.ChartData.ChartDataWorkbook.GetCell(0, "B4", -3));
    series.DataPoints.AddDataPointForBarSeries(chart.ChartData.ChartDataWorkbook.GetCell(0, "B5", 1));

    // Inverser la couleur si le point de données à l'indice 2 est négatif.
    series.InvertIfNegative = false;
    series.DataPoints[2].InvertIfNegative = true;
                
    presentation.Save("data_point_invert_color_if_negative.pptx", SaveFormat.Pptx);
}

Effacer les valeurs de points de données spécifiques

Parfois, un graphique contient des valeurs de test, des valeurs aberrantes ou des entrées obsolètes que vous devez supprimer sans reconstruire l’ensemble de la série. Aspose.Slides pour .NET vous permet de cibler n’importe quel point de données par son indice, d’effacer son contenu et de rafraîchir immédiatement le tracé afin que les points restants se déplacent et que les axes soient redimensionnés automatiquement.

L’exemple de code suivant montre l’opération :

using (Presentation presentation = new Presentation("test_chart.pptx"))
{
    ISlide slide = presentation.Slides[0];
    IChart chart = (IChart)slide.Shapes[0];
    IChartSeries series = chart.ChartData.Series[0];

    foreach (IChartDataPoint dataPoint in series.DataPoints)
    {
        dataPoint.XValue.AsCell.Value = null;
        dataPoint.YValue.AsCell.Value = null;
    }

    series.DataPoints.Clear();

    presentation.Save("clear_data_points.pptx", SaveFormat.Pptx);
}

Définir la largeur de l’écart de la série

La largeur de l’écart contrôle la quantité d’espace vide entre les colonnes ou barres adjacentes — des écarts plus larges mettent en avant les catégories individuelles, tandis que des écarts plus étroits créent un aspect plus dense et compact. Grâce à Aspose.Slides pour .NET, vous pouvez régler finement ce paramètre pour une série complète, obtenant ainsi l’équilibre visuel exact que votre présentation requiert sans modifier les données sous‑jacentes.

L’exemple de code suivant montre comment définir la largeur de l’écart pour une série :

ushort gapWidth = 30;

// Créer une présentation vide.
using (Presentation presentation = new Presentation())
{
    // Accéder à la première diapositive.
    ISlide slide = presentation.Slides[0];

    // Ajouter un graphique avec les données par défaut.
    IChart chart = slide.Shapes.AddChart(ChartType.StackedColumn, 20, 20, 500, 200);

    // Enregistrer la présentation sur le disque.
    presentation.Save("default_gap_width.pptx", SaveFormat.Pptx);

    // Définir la valeur de GapWidth.
    IChartSeries series = chart.ChartData.Series[0];
    series.ParentSeriesGroup.GapWidth = gapWidth;

    // Enregistrer la présentation sur le disque.
    presentation.Save("gap_width_30.pptx", SaveFormat.Pptx);
}

Le résultat :

The gap width

FAQ

Existe‑t‑il une limite au nombre de séries qu’un graphique unique peut contenir ?

Aspose.Slides n’impose aucune limite fixe au nombre de séries que vous ajoutez. La contrainte pratique dépend de la lisibilité du graphique et de la mémoire disponible pour votre application.

Que faire si les colonnes d’un groupe sont trop proches les unes des autres ou trop éloignées ?

Ajustez le paramètre GapWidth pour cette série (ou son groupe de séries parent). Augmenter la valeur élargit l’espace entre les colonnes, tandis que la diminuer les rapproche.