Criar gráficos em apresentações do PowerPoint

Os gráficos são uma excelente ferramenta para mostrar dados de forma concisa. Além disso, eles facilitam o consumo de grandes quantidades de dados, representando-os visualmente. Adicionar gráficos às suas apresentações pode ser útil ao apresentar dados como as tendências de crescimento da empresa ou a taxa de adoção de produtos. Para isso, este artigo ensinará como criar gráficos em apresentações do PowerPoint usando C++.

API C++ para criar gráficos em apresentações do PowerPoint

Aspose.Slides for C++ é uma biblioteca nativa de C++ que oferece suporte à criação, leitura e manipulação de arquivos do PowerPoint. A API também oferece suporte à criação de gráficos em apresentações do PowerPoint. Você pode instalar a API por meio do NuGet ou baixá-la diretamente da seção Downloads.

PM> Install-Package Aspose.Slides.Cpp

Criar gráfico de colunas em apresentações do PowerPoint usando C++

A seguir estão as etapas para criar um gráfico de colunas em apresentações do PowerPoint.

Veja a seguir o código de exemplo para adicionar um gráfico de colunas na apresentação do PowerPoint usando C++.

// Caminho do arquivo de saída.
const String outputFilePath = u"OutputDirectory\\column_chart.pptx";

// Instanciar classe de apresentação que representa o arquivo PPTX
SharedPtr<Presentation> pres = MakeObject<Presentation>();

// Acesse o primeiro slide
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);

// Adicionar gráfico com dados padrão
SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::ClusteredColumn, 0, 0, 500, 500);

// Configurando o índice da folha de dados do gráfico
int defaultWorksheetIndex = 0;

// Obtendo a pasta de trabalho de dados do gráfico
SharedPtr<IChartDataWorkbook> fact = chart->get_ChartData()->get_ChartDataWorkbook();

// Definindo o título do gráfico
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);

// Excluir séries e categorias geradas padrão
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();

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

// Adicionar categorias
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")));

// Pegue a primeira série de gráficos
SharedPtr<IChartSeries> series = chart->get_ChartData()->get_Series()->idx_get(0);

// Preencher dados da 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)));

// Configurando a cor de preenchimento para a série
series->get_Format()->get_Fill()->set_FillType(FillType::Solid);
series->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Blue());

// Pegue a segunda série de gráficos
series = chart->get_ChartData()->get_Series()->idx_get(1);

// Preencher dados da 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)));

// Configurando a cor de preenchimento para a série
series->get_Format()->get_Fill()->set_FillType(FillType::Solid);
series->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(System::Drawing::Color::get_Orange());

// O primeiro rótulo mostrará o nome da categoria
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 o terceiro rótulo
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"/");

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

A seguir está a imagem do gráfico de colunas gerado pelo código de exemplo.

Criar gráfico de colunas em apresentações do PowerPoint

Criando um gráfico de pizza em apresentações do PowerPoint usando C++

A seguir estão as etapas para adicionar um gráfico de pizza aos slides do PowerPoint.

Veja a seguir o código de exemplo para adicionar um gráfico de pizza em slides do PowerPoint usando C++.

// Caminho do arquivo de saída.
const String outputFilePath = u"OutputDirectory\\pie_chart.pptx";

// Instanciar classe de apresentação que representa o arquivo PPTX
SharedPtr<Presentation> pres = MakeObject<Presentation>();

// Acesse o primeiro slide
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);

// Adicionar gráfico com dados padrão
SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::Pie, 0, 0, 500, 500);

// Definindo o título do gráfico
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);

// Excluir séries e categorias geradas padrão
chart->get_ChartData()->get_Series()->Clear();
chart->get_ChartData()->get_Categories()->Clear();

// Configurando o índice da folha de dados do gráfico
int defaultWorksheetIndex = 0;

// Obtendo a pasta de trabalho de dados do gráfico
SharedPtr<IChartDataWorkbook> fact = chart->get_ChartData()->get_ChartDataWorkbook();

// Adicionar categorias
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")));

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

// Pegue a primeira série de gráficos
SharedPtr<IChartSeries> series = chart->get_ChartData()->get_Series()->idx_get(0);

// Preencher dados da 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());

// Configurando a borda do setor
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());

// Configurando a borda do setor
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());

// Configurando a borda do setor
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);

// Crie rótulos personalizados para cada categoria da 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);

// Mostrando Linhas Líderes para Gráfico
series->get_Labels()->get_DefaultDataLabelFormat()->set_ShowLeaderLines(true);

// Configurando o ângulo de rotação para setores do gráfico de pizza
chart->get_ChartData()->get_SeriesGroups()->idx_get(0)->set_FirstSliceAngle(180);

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

A seguir está a imagem do gráfico de pizza gerado pelo código de exemplo.

Criar gráfico de pizza em apresentações do PowerPoint

Criar gráfico disperso na apresentação do PowerPoint usando C++

A seguir estão as etapas para adicionar um gráfico disperso aos slides do PowerPoint.

Veja a seguir o código de exemplo para adicionar um gráfico disperso a slides do PowerPoint usando C++.

// Caminho do arquivo de saída.
const String outputFilePath = u"OutputDirectory\\scattered_chart.pptx";

// Instanciar classe de apresentação que representa o arquivo PPTX
SharedPtr<Presentation> pres = MakeObject<Presentation>();

// Acesse o primeiro slide
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);

// Adicionar gráfico com dados padrão
SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::ScatterWithSmoothLines, 0, 0, 500, 500);

// Excluir série gerada padrão 
chart->get_ChartData()->get_Series()->Clear();

// Configurando o índice da folha de dados do gráfico
int defaultWorksheetIndex = 0;

// Obtendo a pasta de trabalho de dados do gráfico
SharedPtr<IChartDataWorkbook> fact = chart->get_ChartData()->get_ChartDataWorkbook();

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

// Pegue a primeira série de gráficos
SharedPtr<IChartSeries> series = chart->get_ChartData()->get_Series()->idx_get(0);

// Adicione um novo ponto (1:3) lá.
series->get_DataPoints()->AddDataPointForScatterSeries(fact->GetCell(defaultWorksheetIndex, 2, 1, ObjectExt::Box<double>(1)), fact->GetCell(defaultWorksheetIndex, 2, 2, ObjectExt::Box<double>(3)));

// Adicionar novo ponto (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 o tipo de série
series->set_Type(ChartType::ScatterWithStraightLinesAndMarkers);

// Alterando o marcador da série do gráfico
series->get_Marker()->set_Size(10);
series->get_Marker()->set_Symbol(MarkerStyleType::Star);

// Pegue a segunda série de gráficos
series = chart->get_ChartData()->get_Series()->idx_get(1);

// Adicione um novo ponto (5:2) lá.
series->get_DataPoints()->AddDataPointForScatterSeries(fact->GetCell(defaultWorksheetIndex, 2, 3, ObjectExt::Box<double>(5)), fact->GetCell(defaultWorksheetIndex, 2, 4, ObjectExt::Box<double>(2)));

// Adicionar novo ponto (3:1)
series->get_DataPoints()->AddDataPointForScatterSeries(fact->GetCell(defaultWorksheetIndex, 3, 3, ObjectExt::Box<double>(3)), fact->GetCell(defaultWorksheetIndex, 3, 4, ObjectExt::Box<double>(1)));

// Adicionar novo ponto (2:2)
series->get_DataPoints()->AddDataPointForScatterSeries(fact->GetCell(defaultWorksheetIndex, 4, 3, ObjectExt::Box<double>(2)), fact->GetCell(defaultWorksheetIndex, 4, 4, ObjectExt::Box<double>(2)));

// Adicionar novo ponto (5:1)
series->get_DataPoints()->AddDataPointForScatterSeries(fact->GetCell(defaultWorksheetIndex, 5, 3, ObjectExt::Box<double>(5)), fact->GetCell(defaultWorksheetIndex, 5, 4, ObjectExt::Box<double>(1)));

// Alterando o marcador da série do gráfico
series->get_Marker()->set_Size(10);
series->get_Marker()->set_Symbol(MarkerStyleType::Circle);

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

A seguir está a imagem do gráfico disperso gerado pelo código de exemplo.

Criar gráfico disperso em apresentações do PowerPoint

Criar gráfico de histograma em apresentações do PowerPoint

A seguir estão as etapas para criar um gráfico de histograma em apresentações do PowerPoint.

Veja a seguir o código de exemplo para criar um gráfico de histograma em apresentações do PowerPoint usando C++.

// Caminho do arquivo de saída.
const String outputFilePath = u"OutputDirectory\\histogram_chart.pptx";

// Instanciar classe de apresentação que representa o arquivo PPTX
SharedPtr<Presentation> pres = MakeObject<Presentation>();

// Acesse o primeiro slide
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);

// Adicionar gráfico com dados padrão
System::SharedPtr<IChart> chart = slide->get_Shapes()->AddChart(Aspose::Slides::Charts::ChartType::Histogram, 50, 50, 500, 400);

// Excluir séries e categorias geradas padrão
chart->get_ChartData()->get_Categories()->Clear();
chart->get_ChartData()->get_Series()->Clear();

// Obtendo a pasta de trabalho de dados do gráfico
System::SharedPtr<IChartDataWorkbook> wb = chart->get_ChartData()->get_ChartDataWorkbook();

wb->Clear(0);

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

// Preencher dados da 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)));

// Definir tipo de agregação de eixo
chart->get_Axes()->get_HorizontalAxis()->set_AggregationType(Aspose::Slides::Charts::AxisAggregationType::Automatic);

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

A seguir está a imagem do gráfico de histograma gerado pelo código de exemplo.

Criar gráfico de histograma em apresentações do PowerPoint

Gráficos Adicionais Suportados

Além dos gráficos mostrados acima, o Aspose.Slides for C++ oferece suporte a muitos outros tipos de gráficos. Você pode ver a lista completa de tipos de gráficos suportados com código de exemplo lendo este artigo de documentação.

Obtenha uma licença gratuita

Você pode solicitar uma licença temporária gratuita para experimentar a API sem limitações de avaliação.

Conclusão

Neste artigo, você aprendeu como adicionar gráficos em slides do PowerPoint usando C++. Especificamente, você aprendeu como adicionar gráficos de Coluna, Dispersos, Pizza e Histograma em suas apresentações do PowerPoint. Além disso, você viu que o Aspose.Slides for C++ API fornece muito mais tipos de gráficos para você usar em suas apresentações do PowerPoint. Além de gráficos, a API oferece vários recursos para aprimorar suas apresentações do PowerPoint. Você pode explorar a API em detalhes usando a documentação oficial. Em caso de dúvidas, não hesite em contactar-nos no fórum de suporte gratuito.

Veja também