Create Multiple Pie Charts using ggplot2 in R - GeeksforGeeks

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
Add facet_grid()
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 variabledf$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:
Picked
R-ggplot
Technical Scripter 2020
R Language
Technical Scripter
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Change Color of Bars in Barchart using ggplot2 in R
How to Change Axis Scales in R Plots?
Group by function in R using Dplyr
How to Split Column Into Multiple Columns in R DataFrame?
Logistic Regression in R Programming
How to import an Excel File into R ?
How to filter R DataFrame by values in a column?
How to change the order of bars in bar chart in R ?
R - if statement
Replace Specific Characters in String in R