Створення діаграм у презентаціях PowerPoint

Діаграми є чудовим інструментом для стислого відображення даних. Крім того, вони полегшують споживання великих обсягів даних, представляючи їх візуально. Додавання діаграм до ваших презентацій може виявитися корисним під час представлення таких даних, як тенденції розвитку компанії або рівень впровадження продукту. З цією метою ця стаття навчить вас створювати діаграми в PowerPoint PPT або PPTX на C++.

C++ API для створення діаграм у PowerPoint PPT

Aspose.Slides for C++ — це рідна бібліотека C++, яка підтримує створення, читання та керування файлами PowerPoint. API також підтримує створення діаграм у презентаціях PowerPoint. Ви можете встановити API через NuGet або завантажити його безпосередньо з розділу Завантаження.

PM> Install-Package Aspose.Slides.Cpp

Створення стовпчастої діаграми в PowerPoint PPT за допомогою C++

Нижче наведено кроки для створення стовпчастої діаграми в PowerPoint PPT.

Нижче наведено приклад коду для додавання стовпчастої діаграми в презентацію PowerPoint за допомогою C++.

// Шлях вихідного файлу.
const String outputFilePath = u"OutputDirectory\\column_chart.pptx";

// Екземпляр класу презентації, який представляє файл PPTX
SharedPtr<Presentation> pres = MakeObject<Presentation>();

// Доступ до першого слайда
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);

// Додайте діаграму з даними за замовчуванням
SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::ClusteredColumn, 0, 0, 500, 500);

// Встановлення індексу таблиці даних діаграми
int defaultWorksheetIndex = 0;

// Отримання книги даних діаграми
SharedPtr<IChartDataWorkbook> fact = chart->get_ChartData()->get_ChartDataWorkbook();

// Налаштування діаграми Назва
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);

// Видалити створені за замовчуванням серії та категорії
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();

// Додати серію
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());

// Додайте категорії
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")));

// Візьміть першу серію діаграм
SharedPtr<IChartSeries> series = chart->get_ChartData()->get_Series()->idx_get(0);

// Заповніть дані серії
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)));

// Встановлення кольору заливки для серії
series->get_Format()->get_Fill()->set_FillType(FillType::Solid);
series->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Blue());

// Візьміть другу серію діаграм
series = chart->get_ChartData()->get_Series()->idx_get(1);

// Заповніть дані серії
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)));

// Встановлення кольору заливки для серії
series->get_Format()->get_Fill()->set_FillType(FillType::Solid);
series->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Orange());

// Перша мітка буде показувати назву категорії
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);

// Показати значення для третьої мітки
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"/");

// Збережіть файл PPTX
pres->Save(outputFilePath, Aspose::Slides::Export::SaveFormat::Pptx);

Нижче наведено зображення стовпчастої діаграми, згенероване зразком коду.

Створення стовпчастої діаграми в PowerPoint PPT

Створення секторної діаграми в PowerPoint PPTX за допомогою C++

Нижче наведено кроки, щоб додати секторну діаграму до PowerPoint PPTX.

Нижче наведено зразок коду для додавання кругової діаграми в PowerPoint PPTX за допомогою C++.

// Шлях вихідного файлу.
const String outputFilePath = u"OutputDirectory\\pie_chart.pptx";

// Екземпляр класу презентації, який представляє файл PPTX
SharedPtr<Presentation> pres = MakeObject<Presentation>();

// Доступ до першого слайда
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);

// Додайте діаграму з даними за замовчуванням
SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::Pie, 0, 0, 500, 500);

// Налаштування діаграми Назва
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);

// Видалити створені за замовчуванням серії та категорії
chart->get_ChartData()->get_Series()->Clear();
chart->get_ChartData()->get_Categories()->Clear();

// Встановлення індексу таблиці даних діаграми
int defaultWorksheetIndex = 0;

// Отримання книги даних діаграми
SharedPtr<IChartDataWorkbook> fact = chart->get_ChartData()->get_ChartDataWorkbook();

// Додайте категорії
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")));

// Додати серію
chart->get_ChartData()->get_Series()->Add(fact->GetCell(defaultWorksheetIndex, 0, 1, ObjectExt::Box<System::String>(u"Series 1")), chart->get_Type());

// Візьміть першу серію діаграм
SharedPtr<IChartSeries> series = chart->get_ChartData()->get_Series()->idx_get(0);

// Заповніть дані серії
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());

// Налаштування кордону сектора
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());

// Налаштування кордону сектора
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());

// Налаштування кордону сектора
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);

// Створіть власні мітки для кожної категорії в серії
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);

// Відображення виносних ліній для діаграми
series->get_Labels()->get_DefaultDataLabelFormat()->set_ShowLeaderLines(true);

// Встановлення кута повороту для секторів кругової діаграми
chart->get_ChartData()->get_SeriesGroups()->idx_get(0)->set_FirstSliceAngle(180);

// Збережіть файл PPTX
pres->Save(outputFilePath, Aspose::Slides::Export::SaveFormat::Pptx);

Нижче наведено зображення секторної діаграми, згенерованої зразком коду.

Створення секторної діаграми в PowerPoint PPTX

Створення розсіяної діаграми в PPT-презентації на C++

Нижче наведено кроки, щоб додати розсіяну діаграму до слайдів PowerPoint.

Нижче наведено приклад коду для додавання розсіяної діаграми до PowerPoint PPT на C++.

// Шлях вихідного файлу.
const String outputFilePath = u"OutputDirectory\\scattered_chart.pptx";

// Екземпляр класу презентації, який представляє файл PPTX
SharedPtr<Presentation> pres = MakeObject<Presentation>();

// Доступ до першого слайда
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);

// Додайте діаграму з даними за замовчуванням
SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::ScatterWithSmoothLines, 0, 0, 500, 500);

// Видалити серію, згенеровану за замовчуванням 
chart->get_ChartData()->get_Series()->Clear();

// Встановлення індексу таблиці даних діаграми
int defaultWorksheetIndex = 0;

// Отримання книги даних діаграми
SharedPtr<IChartDataWorkbook> fact = chart->get_ChartData()->get_ChartDataWorkbook();

// Додати серію
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());

// Візьміть першу серію діаграм
SharedPtr<IChartSeries> series = chart->get_ChartData()->get_Series()->idx_get(0);

// Додайте туди нову точку (1:3).
series->get_DataPoints()->AddDataPointForScatterSeries(fact->GetCell(defaultWorksheetIndex, 2, 1, ObjectExt::Box<double>(1)), fact->GetCell(defaultWorksheetIndex, 2, 2, ObjectExt::Box<double>(3)));

// Додати нову точку (2:10)
series->get_DataPoints()->AddDataPointForScatterSeries(fact->GetCell(defaultWorksheetIndex, 3, 1, ObjectExt::Box<double>(2)), fact->GetCell(defaultWorksheetIndex, 3, 2, ObjectExt::Box<double>(10)));

// Відредагуйте тип серії
series->set_Type(ChartType::ScatterWithStraightLinesAndMarkers);

// Зміна маркера серії діаграм
series->get_Marker()->set_Size(10);
series->get_Marker()->set_Symbol(MarkerStyleType::Star);

// Візьміть другу серію діаграм
series = chart->get_ChartData()->get_Series()->idx_get(1);

// Додайте туди нову точку (5:2).
series->get_DataPoints()->AddDataPointForScatterSeries(fact->GetCell(defaultWorksheetIndex, 2, 3, ObjectExt::Box<double>(5)), fact->GetCell(defaultWorksheetIndex, 2, 4, ObjectExt::Box<double>(2)));

// Додати нову точку (3:1)
series->get_DataPoints()->AddDataPointForScatterSeries(fact->GetCell(defaultWorksheetIndex, 3, 3, ObjectExt::Box<double>(3)), fact->GetCell(defaultWorksheetIndex, 3, 4, ObjectExt::Box<double>(1)));

// Додати нову точку (2:2)
series->get_DataPoints()->AddDataPointForScatterSeries(fact->GetCell(defaultWorksheetIndex, 4, 3, ObjectExt::Box<double>(2)), fact->GetCell(defaultWorksheetIndex, 4, 4, ObjectExt::Box<double>(2)));

// Додати нову точку (5:1)
series->get_DataPoints()->AddDataPointForScatterSeries(fact->GetCell(defaultWorksheetIndex, 5, 3, ObjectExt::Box<double>(5)), fact->GetCell(defaultWorksheetIndex, 5, 4, ObjectExt::Box<double>(1)));

// Зміна маркера серії діаграм
series->get_Marker()->set_Size(10);
series->get_Marker()->set_Symbol(MarkerStyleType::Circle);

// Збережіть файл PPTX
pres->Save(outputFilePath, Aspose::Slides::Export::SaveFormat::Pptx);

Нижче наведено зображення розсіяної діаграми, створеної зразком коду.

Створення розсіяної діаграми в PowerPoint PPT

C++ Створення гістограмної діаграми в PowerPoint PPT

Нижче наведено кроки для створення діаграми гістограми в презентаціях PowerPoint.

Нижче наведено приклад коду для створення діаграми гістограми в презентаціях PowerPoint за допомогою C++.

// Шлях вихідного файлу.
const String outputFilePath = u"OutputDirectory\\histogram_chart.pptx";

// Екземпляр класу презентації, який представляє файл PPTX
SharedPtr<Presentation> pres = MakeObject<Presentation>();

// Доступ до першого слайда
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);

// Додайте діаграму з даними за замовчуванням
System::SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::Histogram, 50, 50, 500, 400);

// Видалити створені за замовчуванням серії та категорії
chart->get_ChartData()->get_Categories()->Clear();
chart->get_ChartData()->get_Series()->Clear();

// Отримання книги даних діаграми
System::SharedPtr<IChartDataWorkbook> wb = chart->get_ChartData()->get_ChartDataWorkbook();

wb->Clear(0);

// Додати серію
System::SharedPtr<IChartSeries> series = chart->get_ChartData()->get_Series()->Add(Aspose::Slides::Charts::ChartType::Histogram);

// Заповніть дані серії
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)));

// Встановіть тип агрегації осі
chart->get_Axes()->get_HorizontalAxis()->set_AggregationType(Aspose::Slides::Charts::AxisAggregationType::Automatic);

// Збережіть файл PPTX
pres->Save(outputFilePath, Aspose::Slides::Export::SaveFormat::Pptx);

Нижче наведено зображення діаграми гістограми, згенерованої зразком коду.

Створення гістограмної діаграми в презентаціях PowerPoint

Додаткові підтримувані діаграми

Крім наведених вище діаграм, Aspose.Slides for C++ підтримує багато інших типів діаграм. Ви можете переглянути повний список підтримуваних типів діаграм із прикладом коду, прочитавши цю статтю документації.

C++ PowerPoint API – отримайте безкоштовну ліцензію

Ви можете подати запит на безкоштовну тимчасову ліцензію, щоб випробувати API без обмежень оцінки.

Висновок

У цій статті ви дізналися, як додавати діаграми до слайдів PowerPoint за допомогою C++. Зокрема, ви навчилися додавати стовпчасті, розсіяні, кругові та гістограмні діаграми у свої презентації PowerPoint. Крім того, ви бачили, що API Aspose.Slides for C++ надає набагато більше типів діаграм, які можна використовувати у своїх презентаціях PowerPoint.

Aspose.Slides for C++ – докладніше

Окрім діаграм, Aspose.Slides for C++ надає низку функцій для вдосконалення ваших презентацій PowerPoint. Ви можете детально вивчити API, використовуючи офіційну документацію. Якщо у вас виникнуть запитання, зв’яжіться з нами на безкоштовному форумі підтримки.

Дивись також