Crear gráficos en presentaciones de PowerPoint

Los gráficos son una excelente herramienta para mostrar datos de manera concisa. Además, facilitan el consumo de grandes cantidades de datos al representarlos visualmente. Agregar gráficos a sus presentaciones puede resultar útil al presentar datos como las tendencias de crecimiento de la empresa o la tasa de adopción de productos. Con ese fin, este artículo le enseñará cómo crear gráficos en presentaciones de PowerPoint usando C++.

API de C++ para crear gráficos en presentaciones de PowerPoint

Aspose.Slides for C++ es una biblioteca nativa de C++ que admite la creación, lectura y manipulación de archivos de PowerPoint. La API también admite la creación de gráficos en presentaciones de PowerPoint. Puede instalar la API a través de NuGet o descargarla directamente desde la sección Descargas.

PM> Install-Package Aspose.Slides.Cpp

Crear gráfico de columnas en presentaciones de PowerPoint usando C++

Los siguientes son los pasos para crear un gráfico de columnas en presentaciones de PowerPoint.

El siguiente es el código de muestra para agregar un gráfico de columnas en una presentación de PowerPoint usando C++.

// Ruta del archivo de salida.
const String outputFilePath = u"OutputDirectory\\column_chart.pptx";

// Instanciar la clase de presentación que representa el archivo PPTX
SharedPtr<Presentation> pres = MakeObject<Presentation>();

// Acceder a la primera diapositiva
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);

// Agregar gráfico con datos predeterminados
SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::ClusteredColumn, 0, 0, 500, 500);

// Configuración del índice de la hoja de datos del gráfico
int defaultWorksheetIndex = 0;

// Obtener el Workbook de datos del gráfico
SharedPtr<IChartDataWorkbook> fact = chart->get_ChartData()->get_ChartDataWorkbook();

// Tabla de configuración Título
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);

// Eliminar series y categorías generadas por defecto
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();

// Agregar serie
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());

// Añadir categorías
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")));

// Tomar la primera serie de gráficos
SharedPtr<IChartSeries> series = chart->get_ChartData()->get_Series()->idx_get(0);

// Rellenar datos de serie
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)));

// Configuración del color de relleno para la serie
series->get_Format()->get_Fill()->set_FillType(FillType::Solid);
series->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Blue());

// Tome la segunda serie de gráficos
series = chart->get_ChartData()->get_Series()->idx_get(1);

// Rellenar datos de serie
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)));

// Configuración del color de relleno para la serie
series->get_Format()->get_Fill()->set_FillType(FillType::Solid);
series->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Orange());

// La primera etiqueta mostrará el nombre de la categoría
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);

// Mostrar valor para la tercera etiqueta
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"/");

// Guardar archivo PPTX
pres->Save(outputFilePath, Aspose::Slides::Export::SaveFormat::Pptx);

La siguiente es la imagen del gráfico de columnas generado por el código de ejemplo.

Crear gráfico de columnas en presentaciones de PowerPoint

Creación de gráficos circulares en presentaciones de PowerPoint usando C++

Los siguientes son los pasos para agregar un gráfico circular a las diapositivas de PowerPoint.

El siguiente es el código de muestra para agregar un gráfico circular en diapositivas de PowerPoint usando C++.

// Ruta del archivo de salida.
const String outputFilePath = u"OutputDirectory\\pie_chart.pptx";

// Instanciar la clase de presentación que representa el archivo PPTX
SharedPtr<Presentation> pres = MakeObject<Presentation>();

// Acceder a la primera diapositiva
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);

// Agregar gráfico con datos predeterminados
SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::Pie, 0, 0, 500, 500);

// Tabla de configuración Título
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);

// Eliminar series y categorías generadas por defecto
chart->get_ChartData()->get_Series()->Clear();
chart->get_ChartData()->get_Categories()->Clear();

// Configuración del índice de la hoja de datos del gráfico
int defaultWorksheetIndex = 0;

// Obtener el Workbook de datos del gráfico
SharedPtr<IChartDataWorkbook> fact = chart->get_ChartData()->get_ChartDataWorkbook();

// Añadir categorías
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")));

// Agregar serie
chart->get_ChartData()->get_Series()->Add(fact->GetCell(defaultWorksheetIndex, 0, 1, ObjectExt::Box<System::String>(u"Series 1")), chart->get_Type());

// Tomar la primera serie de gráficos
SharedPtr<IChartSeries> series = chart->get_ChartData()->get_Series()->idx_get(0);

// Rellenar datos de serie
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());

// Configuración del borde del sector
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());

// Configuración del borde del sector
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());

// Configuración del borde del sector
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);

// Cree etiquetas personalizadas para cada categoría de la serie
SharedPtr<IDataLabel> lbl1 = series->get_DataPoints()->idx_get(0)->get_Label();

// lbl.ShowCategoryName = verdadero;
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);

// Mostrar líneas directrices para el gráfico
series->get_Labels()->get_DefaultDataLabelFormat()->set_ShowLeaderLines(true);

// Configuración del ángulo de rotación para sectores de gráficos circulares
chart->get_ChartData()->get_SeriesGroups()->idx_get(0)->set_FirstSliceAngle(180);

// Guardar archivo PPTX
pres->Save(outputFilePath, Aspose::Slides::Export::SaveFormat::Pptx);

La siguiente es la imagen del gráfico circular generado por el código de ejemplo.

Crear gráfico circular en presentaciones de PowerPoint

Cree un gráfico disperso en una presentación de PowerPoint usando C++

Los siguientes son los pasos para agregar un gráfico disperso a las diapositivas de PowerPoint.

El siguiente es el código de muestra para agregar un gráfico disperso a las diapositivas de PowerPoint usando C++.

// Ruta del archivo de salida.
const String outputFilePath = u"OutputDirectory\\scattered_chart.pptx";

// Instanciar la clase de presentación que representa el archivo PPTX
SharedPtr<Presentation> pres = MakeObject<Presentation>();

// Acceder a la primera diapositiva
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);

// Agregar gráfico con datos predeterminados
SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::ScatterWithSmoothLines, 0, 0, 500, 500);

// Eliminar serie generada por defecto 
chart->get_ChartData()->get_Series()->Clear();

// Configuración del índice de la hoja de datos del gráfico
int defaultWorksheetIndex = 0;

// Obtener el Workbook de datos del gráfico
SharedPtr<IChartDataWorkbook> fact = chart->get_ChartData()->get_ChartDataWorkbook();

// Agregar serie
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());

// Tomar la primera serie de gráficos
SharedPtr<IChartSeries> series = chart->get_ChartData()->get_Series()->idx_get(0);

// Agregue un nuevo punto (1: 3) allí.
series->get_DataPoints()->AddDataPointForScatterSeries(fact->GetCell(defaultWorksheetIndex, 2, 1, ObjectExt::Box<double>(1)), fact->GetCell(defaultWorksheetIndex, 2, 2, ObjectExt::Box<double>(3)));

// Agregar nuevo punto (2:10)
series->get_DataPoints()->AddDataPointForScatterSeries(fact->GetCell(defaultWorksheetIndex, 3, 1, ObjectExt::Box<double>(2)), fact->GetCell(defaultWorksheetIndex, 3, 2, ObjectExt::Box<double>(10)));

// Editar el tipo de serie
series->set_Type(ChartType::ScatterWithStraightLinesAndMarkers);

// Cambiar el marcador de serie del gráfico
series->get_Marker()->set_Size(10);
series->get_Marker()->set_Symbol(MarkerStyleType::Star);

// Tome la segunda serie de gráficos
series = chart->get_ChartData()->get_Series()->idx_get(1);

// Agregue un nuevo punto (5:2) allí.
series->get_DataPoints()->AddDataPointForScatterSeries(fact->GetCell(defaultWorksheetIndex, 2, 3, ObjectExt::Box<double>(5)), fact->GetCell(defaultWorksheetIndex, 2, 4, ObjectExt::Box<double>(2)));

// Añadir nuevo punto (3:1)
series->get_DataPoints()->AddDataPointForScatterSeries(fact->GetCell(defaultWorksheetIndex, 3, 3, ObjectExt::Box<double>(3)), fact->GetCell(defaultWorksheetIndex, 3, 4, ObjectExt::Box<double>(1)));

// Añadir nuevo punto (2:2)
series->get_DataPoints()->AddDataPointForScatterSeries(fact->GetCell(defaultWorksheetIndex, 4, 3, ObjectExt::Box<double>(2)), fact->GetCell(defaultWorksheetIndex, 4, 4, ObjectExt::Box<double>(2)));

// Añadir nuevo punto (5:1)
series->get_DataPoints()->AddDataPointForScatterSeries(fact->GetCell(defaultWorksheetIndex, 5, 3, ObjectExt::Box<double>(5)), fact->GetCell(defaultWorksheetIndex, 5, 4, ObjectExt::Box<double>(1)));

// Cambiar el marcador de serie del gráfico
series->get_Marker()->set_Size(10);
series->get_Marker()->set_Symbol(MarkerStyleType::Circle);

// Guardar archivo PPTX
pres->Save(outputFilePath, Aspose::Slides::Export::SaveFormat::Pptx);

La siguiente es la imagen del gráfico disperso generado por el código de ejemplo.

Crear gráfico disperso en presentaciones de PowerPoint

Crear gráfico de histograma en presentaciones de PowerPoint

Los siguientes son los pasos para crear un gráfico de histograma en presentaciones de PowerPoint.

El siguiente es el código de muestra para crear un gráfico de histograma en presentaciones de PowerPoint usando C++.

// Ruta del archivo de salida.
const String outputFilePath = u"OutputDirectory\\histogram_chart.pptx";

// Instanciar la clase de presentación que representa el archivo PPTX
SharedPtr<Presentation> pres = MakeObject<Presentation>();

// Acceder a la primera diapositiva
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);

// Agregar gráfico con datos predeterminados
System::SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::Histogram, 50, 50, 500, 400);

// Eliminar series y categorías generadas por defecto
chart->get_ChartData()->get_Categories()->Clear();
chart->get_ChartData()->get_Series()->Clear();

// Obtener el Workbook de datos del gráfico
System::SharedPtr<IChartDataWorkbook> wb = chart->get_ChartData()->get_ChartDataWorkbook();

wb->Clear(0);

// Agregar serie
System::SharedPtr<IChartSeries> series = chart->get_ChartData()->get_Series()->Add(Aspose::Slides::Charts::ChartType::Histogram);

// Rellenar datos de serie
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)));

// Establecer el tipo de agregación de eje
chart->get_Axes()->get_HorizontalAxis()->set_AggregationType(Aspose::Slides::Charts::AxisAggregationType::Automatic);

// Guardar archivo PPTX
pres->Save(outputFilePath, Aspose::Slides::Export::SaveFormat::Pptx);

La siguiente es la imagen del gráfico de histograma generado por el código de ejemplo.

Crear gráfico de histograma en presentaciones de PowerPoint

Gráficos adicionales admitidos

Además de los gráficos que se muestran arriba, Aspose.Slides for C++ admite muchos más tipos de gráficos. Puede ver la lista completa de tipos de gráficos admitidos con código de muestra leyendo este artículo de documentación.

Obtenga una licencia gratis

Puede solicitar una licencia temporal gratuita para probar la API sin limitaciones de evaluación.

Conclusión

En este artículo, ha aprendido a agregar gráficos en diapositivas de PowerPoint usando C++. Específicamente, aprendió cómo agregar gráficos de columnas, dispersos, circulares e histogramas en sus presentaciones de PowerPoint. Además, ha visto que Aspose.Slides for C++ API proporciona muchos más tipos de gráficos para que los use en sus presentaciones de PowerPoint. Además de los gráficos, la API ofrece un montón de funciones para mejorar sus presentaciones de PowerPoint. Puede explorar la API en detalle utilizando la documentación oficial. Si tiene alguna pregunta, no dude en ponerse en contacto con nosotros en el foro de soporte gratuito.

Ver también