# Create Multiple Pie Charts using ggplot2 in R

• Difficulty Level : Hard
• Last Updated : 08 Mar, 2021

Pie Chart, also known as circle chart, is the graphical representation of the relative size or frequency of the data in a circular format. Basically, it helps in visualizing the relative size or frequency of a particular group of data as a part of the whole. This article discusses how multiple pie charts can be created into one frame for consecutive comparison.

Function used:

• pie() function as the name suggests is used for visualizing a pie chart.

Syntax: pie(x, labels, radius, main, col, clockwise)

Parameters:

• x: This parameter is the vector containing the value of the pie chart.
• labels: This parameter is the vector containing the labels of all the slices in Pie Chart.
• radius: This parameter is the value of the radius of the pie chart. This value is between -1 to 1.
• main: This parameter is the title of the chart.
• col: This parameter is the color used in the pie chart.
• clockwise: This parameter is the logical value which is used to draw the slices in clockwise or anti-clockwise direction.
• coord_polar() function is used to create a polar coordinate system, which helps in drawing a pie chart.

Syntax:

coord_polar(theta = “x”, start = 0, direction = 1, clip = “on”)

Parameter:

• theta represents the angle
• start used for setting offset
• direction
• clip decides whether drawing should be clipped or not
• facet_grid() creates a matrix to display rows and columns faceting variables

Syntax:

facet_grid(facets, margins=FALSE, scales=”fixed”, space=”fixed”, shrink=TRUE, labeller=”label_value”, as.table=TRUE, drop=TRUE)

Let us first create a regular pie chart

Program 1 : Regular Pie Chart

## R

 `x <- ``c``(3,3,2,1,1)`` ` `labels <- ``c``(``'ADA'``,``'CN'``,``'PDS'``,``'CPDP'``,``'PE'``)`` ` `pie``(x, labels, main=``"Credits of subjects"``, col=``rainbow``(``length``(x)))`

Output: For building a Pie Chart in R, we can use ggplot2 package, but it does not have a direct method to do so. Instead, we plot a bar graph and then convert it into Pie Chart using coord_polar() function.

Approach:

• Import library
• Create data
• Create dataframe
• Plot a bar graph
• Convert bar graph into Pie chart
• Remove numerical values and grid

Program 2: Pie Chart using ggplot2

## R

 `library``(ggplot2)`` ` `df = ``data.frame``(x <- ``c``(3,3,2,1,1),``                ``labels <- ``c``(``'ADA'``,``'CN'``,``'PDS'``,``'CPDP'``,``'PE'``))`` ` `ggplot``(df, ``aes``(x=``""``, y=x, fill=labels)) +``geom_bar``(width = 1, stat = ``"identity"``) +``  ``coord_polar``(``"y"``, start=0) +``theme_void``()`

Output: To plot multiple pie charts in R using ggplot2, we have to use an additional method named facet_grid(). This method forms a matrix defined by row and column faceting variables. When we have two different variables and need a matrix with all combinations of these two variables, we use this method.

Approach:

• Import library
• Create dataframe
• Convert variables into categorical variables
• Plot Bar graph
• Convert into Pie Chart

Program 3: Multiple Pie Chart

## R

 `library``(ggplot2)``df = ``data.frame``(subject <- ``c``(``'ADA'``,``'ADA'``,``'ADA'``,``'CN'``,``'CN'``,``'CN'``,``'PDS'``,``'PDS'``,``'PDS'``,``'CPDP'``,``                         ``'CPDP'``,``'CPDP'``),``                ``credit <- ``c``(``'Midsem'``,``'Viva'``,``'Attendance'``,``'Midsem'``,``'Viva'``,``'Attendance'``,``                            ``'Midsem'``,``'Viva'``,``'Attendance'``,``'Midsem'``,``'Viva'``,``'Attendance'``),``                ``value <- ``c``(50,30,20,40,40,20,50,35,15,50,40,10))`` ` `df\$subject <- ``factor``(df\$subject)``df\$credit <- ``factor``(df\$credit) `` ` `ggplot``(data=df, ``aes``(x=``" "``, y=value, group=credit, colour=credit, fill=credit)) +``         ``geom_bar``(width = 1, stat = ``"identity"``) +``         ``coord_polar``(``"y"``, start=0) + ``         ``facet_grid``(.~ subject) +``theme_void``()`

Output: We can also plot multiple pie charts in the form of a donut chart using ggplot2 in R.

Approach:

• Import library
• Create dataframe
• Convert variables into categorical variables
• Plot Bar graph using geom_col()
• Add an empty element before the subjects using scale_x_discrete()
• Convert into Pie Chart using coord_polar()

Program 4: Multiple Pie Chart/ Donut Chart

## R

 `library``(ggplot2)``df = ``data.frame``(subject <- ``c``(``'ADA'``,``'ADA'``,``'ADA'``,``'CN'``,``'CN'``,``'CN'``,``'PDS'``,``'PDS'``,``'PDS'``),``                ``credit <- ``c``(``'Midsem'``,``'Viva'``,``'Attendance'``,``'Midsem'``,``'Viva'``,``'Attendance'``,``                            ``'Midsem'``,``'Viva'``,``'Attendance'``),``                ``value <- ``c``(50,30,20,40,40,20,50,35,15))`` ` `df\$subject <- ``factor``(df\$subject) ``# converts to a categorical variable``df\$credit <- ``factor``(df\$credit) ``# converts to a categorical variable`` ` ` ` `ggplot``(df, ``aes``(x = subject, y = value, fill = credit)) +``  ``geom_col``() +``scale_x_discrete``(limits = ``c``(``" "``, ``"ADA"``,``"CN"``,``"PDS"``)) +``coord_polar``(``"y"``)`

Output: My Personal Notes arrow_drop_up