Créer des graphiques dans des présentations PowerPoint

Les graphiques sont un excellent outil pour afficher des données de manière concise. De plus, ils facilitent la consommation de grandes quantités de données en les représentant visuellement. L’ajout de graphiques à vos présentations peut s’avérer utile lors de la présentation de données telles que les tendances de croissance de l’entreprise ou le taux d’adoption des produits. À cette fin, cet article vous apprendra comment créer des graphiques dans des présentations PowerPoint à l’aide de C++.

API C++ pour créer des graphiques dans des présentations PowerPoint

Aspose.Slides for C++ est une bibliothèque C++ native qui prend en charge la création, la lecture et la manipulation de fichiers PowerPoint. L’API prend également en charge la création de graphiques dans les présentations PowerPoint. Vous pouvez soit installer l’API via NuGet ou la télécharger directement à partir de la section Téléchargements.

PM> Install-Package Aspose.Slides.Cpp

Créer un histogramme dans des présentations PowerPoint à l’aide de C++

Voici les étapes pour créer un histogramme dans les présentations PowerPoint.

Voici l’exemple de code pour ajouter un histogramme dans une présentation PowerPoint à l’aide de C++.

// Chemin du fichier de sortie.
const String outputFilePath = u"OutputDirectory\\column_chart.pptx";

// Instancier la classe de présentation qui représente le fichier PPTX
SharedPtr<Presentation> pres = MakeObject<Presentation>();

// Accéder à la première diapositive
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);

// Ajouter un graphique avec des données par défaut
SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::ClusteredColumn, 0, 0, 500, 500);

// Définition de l'index de la feuille de données du graphique
int defaultWorksheetIndex = 0;

// Obtenir le classeur de données de graphique
SharedPtr<IChartDataWorkbook> fact = chart->get_ChartData()->get_ChartDataWorkbook();

// Tableau de réglage Titre
chart->get_ChartTitle()->AddTextFrameForOverriding(u"Sample Title");
chart->get_ChartTitle()->get_TextFrameForOverriding()->get_TextFrameFormat()->set_CenterText(NullableBool::True);
chart->get_ChartTitle()->set_Height(20);
chart->set_HasTitle(true);

// Supprimer les séries et catégories générées par défaut
chart->get_ChartData()->get_Series()->Clear();
chart->get_ChartData()->get_Categories()->Clear();
int s = chart->get_ChartData()->get_Series()->get_Count();
s = chart->get_ChartData()->get_Categories()->get_Count();

// Ajouter une série
chart->get_ChartData()->get_Series()->Add(fact->GetCell(defaultWorksheetIndex, 0, 1, ObjectExt::Box<System::String>(u"Series 1")), chart->get_Type());
chart->get_ChartData()->get_Series()->Add(fact->GetCell(defaultWorksheetIndex, 0, 2, ObjectExt::Box<System::String>(u"Series 2")), chart->get_Type());

// Ajouter des catégories
chart->get_ChartData()->get_Categories()->Add(fact->GetCell(defaultWorksheetIndex, 1, 0, ObjectExt::Box<System::String>(u"Category 1")));
chart->get_ChartData()->get_Categories()->Add(fact->GetCell(defaultWorksheetIndex, 2, 0, ObjectExt::Box<System::String>(u"Category 2")));
chart->get_ChartData()->get_Categories()->Add(fact->GetCell(defaultWorksheetIndex, 3, 0, ObjectExt::Box<System::String>(u"Category 3")));

// Prendre la première série de graphiques
SharedPtr<IChartSeries> series = chart->get_ChartData()->get_Series()->idx_get(0);

// Remplir les données de la série
series->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 1, 1, ObjectExt::Box<double>(20)));
series->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 2, 1, ObjectExt::Box<double>(50)));
series->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 3, 1, ObjectExt::Box<double>(30)));

// Définition de la couleur de remplissage pour les séries
series->get_Format()->get_Fill()->set_FillType(FillType::Solid);
series->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Blue());

// Prendre la deuxième série de graphiques
series = chart->get_ChartData()->get_Series()->idx_get(1);

// Remplir les données de la série
series->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 1, 2, ObjectExt::Box<double>(30)));
series->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 2, 2, ObjectExt::Box<double>(10)));
series->get_DataPoints()->AddDataPointForBarSeries(fact->GetCell(defaultWorksheetIndex, 3, 2, ObjectExt::Box<double>(60)));

// Définition de la couleur de remplissage pour les séries
series->get_Format()->get_Fill()->set_FillType(FillType::Solid);
series->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Orange());

// La première étiquette affichera le nom de la catégorie
SharedPtr<IDataLabel> lbl = series->get_DataPoints()->idx_get(0)->get_Label();
lbl->get_DataLabelFormat()->set_ShowCategoryName(true);

lbl = series->get_DataPoints()->idx_get(1)->get_Label();
lbl->get_DataLabelFormat()->set_ShowSeriesName(true);

// Afficher la valeur pour la troisième étiquette
lbl = series->get_DataPoints()->idx_get(2)->get_Label();
lbl->get_DataLabelFormat()->set_ShowValue(true);
lbl->get_DataLabelFormat()->set_ShowSeriesName(true);
lbl->get_DataLabelFormat()->set_Separator(u"/");

// Enregistrer le fichier PPTX
pres->Save(outputFilePath, Aspose::Slides::Export::SaveFormat::Pptx);

Voici l’image de l’histogramme généré par l’exemple de code.

Créer un histogramme dans les présentations PowerPoint

Création d’un graphique à secteurs dans des présentations PowerPoint à l’aide de C++

Voici les étapes pour ajouter un graphique à secteurs aux diapositives PowerPoint.

Voici l’exemple de code permettant d’ajouter un graphique à secteurs dans des diapositives PowerPoint à l’aide de C++.

// Chemin du fichier de sortie.
const String outputFilePath = u"OutputDirectory\\pie_chart.pptx";

// Instancier la classe de présentation qui représente le fichier PPTX
SharedPtr<Presentation> pres = MakeObject<Presentation>();

// Accéder à la première diapositive
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);

// Ajouter un graphique avec des données par défaut
SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::Pie, 0, 0, 500, 500);

// Tableau de réglage Titre
chart->get_ChartTitle()->AddTextFrameForOverriding(u"Sample Title");
chart->get_ChartTitle()->get_TextFrameForOverriding()->get_TextFrameFormat()->set_CenterText(NullableBool::True);
chart->get_ChartTitle()->set_Height(20);
chart->set_HasTitle(true);

// Supprimer les séries et catégories générées par défaut
chart->get_ChartData()->get_Series()->Clear();
chart->get_ChartData()->get_Categories()->Clear();

// Définition de l'index de la feuille de données du graphique
int defaultWorksheetIndex = 0;

// Obtenir le classeur de données de graphique
SharedPtr<IChartDataWorkbook> fact = chart->get_ChartData()->get_ChartDataWorkbook();

// Ajouter des catégories
chart->get_ChartData()->get_Categories()->Add(fact->GetCell(defaultWorksheetIndex, 1, 0, ObjectExt::Box<System::String>(u"First Qtr")));
chart->get_ChartData()->get_Categories()->Add(fact->GetCell(defaultWorksheetIndex, 2, 0, ObjectExt::Box<System::String>(u"2nd Qtr")));
chart->get_ChartData()->get_Categories()->Add(fact->GetCell(defaultWorksheetIndex, 3, 0, ObjectExt::Box<System::String>(u"3rd Qtr")));

// Ajouter une série
chart->get_ChartData()->get_Series()->Add(fact->GetCell(defaultWorksheetIndex, 0, 1, ObjectExt::Box<System::String>(u"Series 1")), chart->get_Type());

// Prendre la première série de graphiques
SharedPtr<IChartSeries> series = chart->get_ChartData()->get_Series()->idx_get(0);

// Remplir les données de la série
series->get_DataPoints()->AddDataPointForPieSeries(fact->GetCell(defaultWorksheetIndex, 1, 1, ObjectExt::Box<double>(20)));
series->get_DataPoints()->AddDataPointForPieSeries(fact->GetCell(defaultWorksheetIndex, 2, 1, ObjectExt::Box<double>(50)));
series->get_DataPoints()->AddDataPointForPieSeries(fact->GetCell(defaultWorksheetIndex, 3, 1, ObjectExt::Box<double>(30)));

chart->get_ChartData()->get_SeriesGroups()->idx_get(0)->set_IsColorVaried(true);

SharedPtr<IChartDataPoint> point = series->get_DataPoints()->idx_get(0);
point->get_Format()->get_Fill()->set_FillType(FillType::Solid);
point->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Orange());

// Réglage de la bordure du secteur
point->get_Format()->get_Line()->get_FillFormat()->set_FillType(FillType::Solid);
point->get_Format()->get_Line()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Gray());
point->get_Format()->get_Line()->set_Width(3.0);

SharedPtr<IChartDataPoint> point1 = series->get_DataPoints()->idx_get(1);
point1->get_Format()->get_Fill()->set_FillType(FillType::Solid);
point1->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_BlueViolet());

// Réglage de la bordure du secteur
point1->get_Format()->get_Line()->get_FillFormat()->set_FillType(FillType::Solid);
point1->get_Format()->get_Line()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Blue());
point1->get_Format()->get_Line()->set_Width(3.0);

SharedPtr<IChartDataPoint> point2 = series->get_DataPoints()->idx_get(2);
point2->get_Format()->get_Fill()->set_FillType(FillType::Solid);
point2->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_YellowGreen());

// Réglage de la bordure du secteur
point2->get_Format()->get_Line()->get_FillFormat()->set_FillType(FillType::Solid);
point2->get_Format()->get_Line()->get_FillFormat()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Red());
point2->get_Format()->get_Line()->set_Width(2.0);

// Créez des étiquettes personnalisées pour chaque catégorie de la série
SharedPtr<IDataLabel> lbl1 = series->get_DataPoints()->idx_get(0)->get_Label();

// lbl.ShowCategoryName = true ;
lbl1->get_DataLabelFormat()->set_ShowValue(true);

SharedPtr<IDataLabel> lbl2 = series->get_DataPoints()->idx_get(1)->get_Label();
lbl2->get_DataLabelFormat()->set_ShowValue(true);
lbl2->get_DataLabelFormat()->set_ShowLegendKey(true);
lbl2->get_DataLabelFormat()->set_ShowPercentage(true);

SharedPtr<IDataLabel> lbl3 = series->get_DataPoints()->idx_get(2)->get_Label();

lbl3->get_DataLabelFormat()->set_ShowSeriesName(true);
lbl3->get_DataLabelFormat()->set_ShowPercentage(true);

// Affichage des lignes de repère pour le graphique
series->get_Labels()->get_DefaultDataLabelFormat()->set_ShowLeaderLines(true);

// Définition de l'angle de rotation pour les secteurs du graphique à secteurs
chart->get_ChartData()->get_SeriesGroups()->idx_get(0)->set_FirstSliceAngle(180);

// Enregistrer le fichier PPTX
pres->Save(outputFilePath, Aspose::Slides::Export::SaveFormat::Pptx);

Voici l’image du graphique à secteurs généré par l’exemple de code.

Créer un graphique à secteurs dans les présentations PowerPoint

Créer un graphique dispersé dans une présentation PowerPoint à l’aide de C++

Voici les étapes pour ajouter un graphique dispersé aux diapositives PowerPoint.

Voici l’exemple de code permettant d’ajouter un graphique dispersé aux diapositives PowerPoint à l’aide de C++.

// Chemin du fichier de sortie.
const String outputFilePath = u"OutputDirectory\\scattered_chart.pptx";

// Instancier la classe de présentation qui représente le fichier PPTX
SharedPtr<Presentation> pres = MakeObject<Presentation>();

// Accéder à la première diapositive
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);

// Ajouter un graphique avec des données par défaut
SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::ScatterWithSmoothLines, 0, 0, 500, 500);

// Supprimer la série générée par défaut 
chart->get_ChartData()->get_Series()->Clear();

// Définition de l'index de la feuille de données du graphique
int defaultWorksheetIndex = 0;

// Obtenir le classeur de données de graphique
SharedPtr<IChartDataWorkbook> fact = chart->get_ChartData()->get_ChartDataWorkbook();

// Ajouter une série
chart->get_ChartData()->get_Series()->Add(fact->GetCell(defaultWorksheetIndex, 1, 1, ObjectExt::Box<System::String>(u"Series 1")), chart->get_Type());
chart->get_ChartData()->get_Series()->Add(fact->GetCell(defaultWorksheetIndex, 1, 3, ObjectExt::Box<System::String>(u"Series 2")), chart->get_Type());

// Prendre la première série de graphiques
SharedPtr<IChartSeries> series = chart->get_ChartData()->get_Series()->idx_get(0);

// Ajoutez un nouveau point (1:3) ici.
series->get_DataPoints()->AddDataPointForScatterSeries(fact->GetCell(defaultWorksheetIndex, 2, 1, ObjectExt::Box<double>(1)), fact->GetCell(defaultWorksheetIndex, 2, 2, ObjectExt::Box<double>(3)));

// Ajouter un nouveau point (2:10)
series->get_DataPoints()->AddDataPointForScatterSeries(fact->GetCell(defaultWorksheetIndex, 3, 1, ObjectExt::Box<double>(2)), fact->GetCell(defaultWorksheetIndex, 3, 2, ObjectExt::Box<double>(10)));

// Modifier le type de série
series->set_Type(ChartType::ScatterWithStraightLinesAndMarkers);

// Modification du marqueur de série de graphiques
series->get_Marker()->set_Size(10);
series->get_Marker()->set_Symbol(MarkerStyleType::Star);

// Prendre la deuxième série de graphiques
series = chart->get_ChartData()->get_Series()->idx_get(1);

// Ajoutez un nouveau point (5:2) ici.
series->get_DataPoints()->AddDataPointForScatterSeries(fact->GetCell(defaultWorksheetIndex, 2, 3, ObjectExt::Box<double>(5)), fact->GetCell(defaultWorksheetIndex, 2, 4, ObjectExt::Box<double>(2)));

// Ajouter un nouveau point (3:1)
series->get_DataPoints()->AddDataPointForScatterSeries(fact->GetCell(defaultWorksheetIndex, 3, 3, ObjectExt::Box<double>(3)), fact->GetCell(defaultWorksheetIndex, 3, 4, ObjectExt::Box<double>(1)));

// Ajouter un nouveau point (2:2)
series->get_DataPoints()->AddDataPointForScatterSeries(fact->GetCell(defaultWorksheetIndex, 4, 3, ObjectExt::Box<double>(2)), fact->GetCell(defaultWorksheetIndex, 4, 4, ObjectExt::Box<double>(2)));

// Ajouter un nouveau point (5:1)
series->get_DataPoints()->AddDataPointForScatterSeries(fact->GetCell(defaultWorksheetIndex, 5, 3, ObjectExt::Box<double>(5)), fact->GetCell(defaultWorksheetIndex, 5, 4, ObjectExt::Box<double>(1)));

// Modification du marqueur de série de graphiques
series->get_Marker()->set_Size(10);
series->get_Marker()->set_Symbol(MarkerStyleType::Circle);

// Enregistrer le fichier PPTX
pres->Save(outputFilePath, Aspose::Slides::Export::SaveFormat::Pptx);

Voici l’image du graphique dispersé généré par l’exemple de code.

Créer un graphique dispersé dans les présentations PowerPoint

Créer un histogramme dans les présentations PowerPoint

Voici les étapes pour créer un histogramme dans les présentations PowerPoint.

Voici un exemple de code pour créer un histogramme dans des présentations PowerPoint à l’aide de C++.

// Chemin du fichier de sortie.
const String outputFilePath = u"OutputDirectory\\histogram_chart.pptx";

// Instancier la classe de présentation qui représente le fichier PPTX
SharedPtr<Presentation> pres = MakeObject<Presentation>();

// Accéder à la première diapositive
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);

// Ajouter un graphique avec des données par défaut
System::SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::Histogram, 50, 50, 500, 400);

// Supprimer les séries et catégories générées par défaut
chart->get_ChartData()->get_Categories()->Clear();
chart->get_ChartData()->get_Series()->Clear();

// Obtenir le classeur de données de graphique
System::SharedPtr<IChartDataWorkbook> wb = chart->get_ChartData()->get_ChartDataWorkbook();

wb->Clear(0);

// Ajouter une série
System::SharedPtr<IChartSeries> series = chart->get_ChartData()->get_Series()->Add(Aspose::Slides::Charts::ChartType::Histogram);

// Remplir les données de la série
series->get_DataPoints()->AddDataPointForHistogramSeries(wb->GetCell(0, u"A1", System::ObjectExt::Box<int32_t>(15)));
series->get_DataPoints()->AddDataPointForHistogramSeries(wb->GetCell(0, u"A2", System::ObjectExt::Box<int32_t>(-41)));
series->get_DataPoints()->AddDataPointForHistogramSeries(wb->GetCell(0, u"A3", System::ObjectExt::Box<int32_t>(16)));
series->get_DataPoints()->AddDataPointForHistogramSeries(wb->GetCell(0, u"A4", System::ObjectExt::Box<int32_t>(10)));
series->get_DataPoints()->AddDataPointForHistogramSeries(wb->GetCell(0, u"A5", System::ObjectExt::Box<int32_t>(-23)));
series->get_DataPoints()->AddDataPointForHistogramSeries(wb->GetCell(0, u"A6", System::ObjectExt::Box<int32_t>(16)));

// Définir le type d'agrégation des axes
chart->get_Axes()->get_HorizontalAxis()->set_AggregationType(Aspose::Slides::Charts::AxisAggregationType::Automatic);

// Enregistrer le fichier PPTX
pres->Save(outputFilePath, Aspose::Slides::Export::SaveFormat::Pptx);

Voici l’image de l’histogramme généré par l’exemple de code.

Créer un histogramme dans les présentations PowerPoint

Graphiques supplémentaires pris en charge

Outre les graphiques ci-dessus, Aspose.Slides for C++ prend en charge de nombreux autres types de graphiques. Vous pouvez afficher la liste complète des types de graphiques pris en charge avec un exemple de code en lisant cet article de documentation.

Obtenez une licence gratuite

Vous pouvez demander une licence temporaire gratuite pour essayer l’API sans limitation d’évaluation.

Conclusion

Dans cet article, vous avez appris à ajouter des graphiques dans des diapositives PowerPoint à l’aide de C++. Plus précisément, vous avez appris à ajouter des graphiques à colonnes, dispersés, à secteurs et histogrammes dans vos présentations PowerPoint. De plus, vous avez vu que l’API Aspose.Slides for C++ fournit beaucoup plus de types de graphiques que vous pouvez utiliser dans vos présentations PowerPoint. Outre les graphiques, l’API propose de nombreuses fonctionnalités pour améliorer vos présentations PowerPoint. Vous pouvez explorer l’API en détail en utilisant la documentation officielle. En cas de questions, n’hésitez pas à nous contacter sur le forum d’assistance gratuit.

Voir également