In PowerPoint, a combination chart is a type of chart that combines two or more different chart types into a single chart. It allows you to display multiple sets of data in the same chart, making it easier to compare and analyze different variables. In this article, you will learn how to programmatically create a combination chart in a PowerPoint presentation using Spire.Presentation for .NET.
Install Spire.Presentation for .NET
To begin with, you need to add the DLL files included in the Spire.Presentation for.NET package as references in your .NET project. The DLL files can be either downloaded from this link or installed via NuGet.
PM> Install-Package Spire.Presentation
Create a Combination Chart in PowerPoint in C# and VB.NET
Spire.Presentation for .NET offers the ISlide.Shapes.AppendChart(ChartType type, RectangleF rectangle) method to add a certain chart type to a slide, and then you can change the chart type of the second series to another chart to create a combo chart. The following are the steps to combine a column chart and a line chart in PowerPoint.
- Create a Presentation instance.
- Get a specified slide and add a column chart to it using ISlide.Shapes.AppendChart(ChartType.ColumnClustered, RectangleF rectangle) method.
- Create a DataTable object and add some data, then import data from data table to chart data.
- Set the chart title, categories labels, series labels and series values.
- Change the chart type of the second series to a line chart with data markers using IChart.Series[int index].Type property.
- Plot the second series on the secondary value axis by setting the IChart.Series[int index].UseSecondAxis property to true.
- Set the number format and gridlines of the secondary value axis.
- Save the result document using Presentation.SaveToFile() method.
- C#
- VB.NET
using Spire.Presentation; using Spire.Presentation.Charts; using Spire.Presentation.Drawing; using System; using System.Data; using System.Drawing; namespace CombinationChart { class Program { static void Main(string[] args) { //Create a Presentation instance Presentation presentation = new Presentation(); //Add a column clustered chart to the first slide RectangleF rect = new RectangleF(80, 120, 550, 320); IChart chart = presentation.Slides[0].Shapes.AppendChart(ChartType.ColumnClustered, rect); //Set and format chart title chart.ChartTitle.TextProperties.Text = "Monthly Sales Report"; chart.ChartTitle.TextProperties.IsCentered = true; chart.ChartTitle.Height = 30; chart.HasTitle = true; //Create a datatable and add some data DataTable dataTable = new DataTable(); dataTable.Columns.Add(new DataColumn("Month", Type.GetType("System.String"))); dataTable.Columns.Add(new DataColumn("Sales", Type.GetType("System.Int32"))); dataTable.Columns.Add(new DataColumn("Growth rate", Type.GetType("System.Decimal"))); dataTable.Rows.Add("January", 200, 0.6); dataTable.Rows.Add("February", 250, 0.8); dataTable.Rows.Add("March", 300, 0.6); dataTable.Rows.Add("April", 150, 0.2); dataTable.Rows.Add("May", 200, 0.5); dataTable.Rows.Add("June", 400, 0.9); //Import data from datatable to chart data for (int c = 0; c < dataTable.Columns.Count; c++) { chart.ChartData[0, c].Text = dataTable.Columns[c].Caption; } for (int r = 0; r < dataTable.Rows.Count; r++) { object[] datas = dataTable.Rows[r].ItemArray; for (int c = 0; c < datas.Length; c++) { chart.ChartData[r + 1, c].Value = datas[c]; } } //Set series labels chart.Series.SeriesLabel = chart.ChartData["B1", "C1"]; //Set categories labels chart.Categories.CategoryLabels = chart.ChartData["A2", "A7"]; //Assign data to series values chart.Series[0].Values = chart.ChartData["B2", "B7"]; chart.Series[1].Values = chart.ChartData["C2", "C7"]; //Change the chart type of series 2 to a line chart with data markers chart.Series[1].Type = ChartType.LineMarkers; //Plot data of series 2 on the secondary axis chart.Series[1].UseSecondAxis = true; //Set the number format of the secondary value axis chart.SecondaryValueAxis.NumberFormat = "0%"; //Hide the gridlines of the secondary value axis chart.SecondaryValueAxis.MajorGridTextLines.FillType = FillFormatType.None; //Set the legend position chart.ChartLegend.Position = ChartLegendPositionType.Top; //Set overlap chart.OverLap = -50; //Set gapwidth chart.GapWidth = 200; //Save the result document presentation.SaveToFile("CombinationChart.pptx", FileFormat.Pptx2010); } } }
Apply for a Temporary License
If you'd like to remove the evaluation message from the generated documents, or to get rid of the function limitations, please request a 30-day trial license for yourself.