Introduction
When it comes to PowerPoint presentations, charts are important because charts can visualize a large amount of complex data and are helpful for data comparison and analysis. This article focuses on how to create the most commonly used chart types (including column chart, pie chart, and combination chart) by using the .NET Presentation library in your C# applications.
Before starting, you’re required to download the library from the link provided, add the DLL files as references in your project, and import the following necessary namespaces at the beginning.
using System;
using Spire.Presentation;
using System.Drawing;
using Spire.Presentation.Charts;
using System.Data;
using Spire.Presentation.Drawing;
Using the code
How to create a column chart
A column chart displays a series as a set of vertical bars that are grouped by category.
//create a PowerPoint document
Presentation presentation = new Presentation();
//insert a column chart
RectangleF rect = new RectangleF(40, 100, 550, 320);
IChart chart = presentation.Slides[0].Shapes.AppendChart(ChartType.ColumnClustered, rect);
//set title
chart.ChartTitle.TextProperties.Text = "Male/Female Ratio Per Dept.";
chart.ChartTitle.TextProperties.IsCentered = true;
chart.ChartTitle.Height = 30;
chart.HasTitle = true;
//define a multi-dimensional array of strings
string[,] data = new string[,]
{
{"Department","Male","Female" },
{"Development","25","15"},
{"Testing","5","10" },
{"Sales","7","3" },
{"Support","20","5" }
};
//write data to chart data
for (int i = 0; i < data.GetLength(0); i++)
{
for (int j = 0; j < data.GetLength(1); j++)
{
int number;
bool result = Int32.TryParse(data[i, j], out number);
if (result)
{
chart.ChartData[i, j].Value = number;
}
else
{
chart.ChartData[i, j].Value = data[i, j];
}
}
}
//set series labels
chart.Series.SeriesLabel = chart.ChartData["B1", "C1"];
//set category labels
chart.Categories.CategoryLabels = chart.ChartData["A2", "A5"];
//set the series values
chart.Series[0].Values = chart.ChartData["B2", "B5"];
chart.Series[1].Values = chart.ChartData["C2", "C5"];
//apply built-in chart style
chart.ChartStyle = ChartStyle.Style11;
//set overlap
chart.OverLap = -50;
//set gap width
chart.GapWidth = 200;
//save to file
presentation.SaveToFile("ColumnChart.pptx", FileFormat.Pptx2010);
Figure 1. Column Chart
How to create a pie chart
A pie chart helps show the proportions and percentages between categories, by dividing a circle into proportional segments.
//create a PowerPoint document
Presentation ppt = new Presentation();
//insert a pie chart
RectangleF rect1 = new RectangleF(40, 100, 550, 320);
IChart chart = ppt.Slides[0].Shapes.AppendChart(ChartType.Pie, rect1, false);
//set title
chart.ChartTitle.TextProperties.Text = "Sales by Quarter";
chart.ChartTitle.TextProperties.IsCentered = true;
chart.ChartTitle.Height = 30;
chart.HasTitle = true;
//define sample data and assign the data to chart data
string[] quarters = new string[] { "1st Qtr", "2nd Qtr", "3rd Qtr", "4th Qtr" };
int[] sales = new int[] { 210, 320, 180, 500 };
chart.ChartData[0, 0].Text = "Quarters";
chart.ChartData[0, 1].Text = "Sales";
for (int i = 0; i < quarters.Length; ++i)
{
chart.ChartData[i + 1, 0].Value = quarters[i];
chart.ChartData[i + 1, 1].Value = sales[i];
}
//set series label
chart.Series.SeriesLabel = chart.ChartData["B1", "B1"];
//set category labels
chart.Categories.CategoryLabels = chart.ChartData["A2", "A5"];
//set series values
chart.Series[0].Values = chart.ChartData["B2", "B5"];
//ddd data points to series and fill each data point with different color
for (int i = 0; i < chart.Series[0].Values.Count; i++)
{
ChartDataPoint cdp = new ChartDataPoint(chart.Series[0]);
cdp.Index = i;
chart.Series[0].DataPoints.Add(cdp);
}
chart.Series[0].DataPoints[0].Fill.FillType = FillFormatType.Solid;
chart.Series[0].DataPoints[0].Fill.SolidColor.Color = Color.LightBlue;
chart.Series[0].DataPoints[1].Fill.FillType = FillFormatType.Solid;
chart.Series[0].DataPoints[1].Fill.SolidColor.Color = Color.DarkGray;
chart.Series[0].DataPoints[2].Fill.FillType = FillFormatType.Solid;
chart.Series[0].DataPoints[2].Fill.SolidColor.Color = Color.MediumPurple;
chart.Series[0].DataPoints[3].Fill.FillType = FillFormatType.Solid;
chart.Series[0].DataPoints[3].Fill.SolidColor.Color = Color.DarkOrange;
//set labels to display label value and percentage value.
chart.Series[0].DataLabels.LabelValueVisible = true;
chart.Series[0].DataLabels.PercentValueVisible = true;
//save to file
ppt.SaveToFile("PieChart.pptx", FileFormat.Pptx2010);
Figure 2. Pie Chart
How to create a combination chart
A combination chart is a chart that combines two or more chart types in a single chart.
//create a PowerPoint document
Presentation presentation = new Presentation();
//insert a column chart
RectangleF rect = new RectangleF(40, 100, 550, 320);
IChart chart = presentation.Slides[0].Shapes.AppendChart(ChartType.ColumnClustered, rect);
//set chart title
chart.ChartTitle.TextProperties.Text = "Monthly Sales Report";
chart.ChartTitle.TextProperties.IsCentered = true;
chart.ChartTitle.Height = 30;
chart.HasTitle = true;
//create a datatable
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 line chart with 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 as percentage
chart.SecondaryValueAxis.NumberFormat = "0%";
//hide grid lines of secondary axis
chart.SecondaryValueAxis.MajorGridTextLines.FillType = FillFormatType.None;
//set overlap
chart.OverLap = -50;
//set gap width
chart.GapWidth = 200;
//save to file
presentation.SaveToFile("CombinationChart.pptx", FileFormat.Pptx2010);
Figure 3. Combination Chart