Open In App

Side by Side pie charts in R

Last Updated : 28 Feb, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

In this article, we will discuss how to draw Pie Charts side by side in R Programming Language.

Method 1: Using base R functions

To draw plots side by side par() function is used.

Syntax:

 par(mfrow, mar, mgp, las)

Parameters:

  • mfrow A numeric vector of length 2, which sets the rows and column in which frame has to be divided.
  • mar – A numeric vector of length 4, which sets the margin sizes in the following order: bottom, left, top, and right.
  • mgp – A numeric vector of length 3, which sets the axis label locations relative to the edge of the inner plot window.
  • las – A numeric value indicating the orientation of the tick mark labels and any other text added to a plot after its initialization.

The plots are drawn normally and independent of others. For drawing them side-by-side pass the number of rows and columns as if a grid is being defined.

Example:

R




# Define data-set columns
x1 <- c(31,13,25,31,16)
x2 <- c(12,23,43,12,22,45,32) 
  
label1 <- c('geek','geek-i-knack','technical-scripter',
            'content-writer','problem-setter')
label2 <- c('sun','mon','tue','wed','thur','fri','sat')  
  
# set the plotting area into a 1*2 array
par(mfrow=c(1,2))    
  
# Draw the two pie chart using above datasets
pie(x1, label1,main="Students per Event", col=rainbow(length(x1)))
pie(x2, label2,main="Students per day in a week")


Output:

Method 2: Using ggplot2

In this grid.arrange() is used to arrange the plots on a frame.

Syntax:

 grid.arrange(plot, nrow, ncol)

Parameter:

  • plot- ggplot2 plot which we want to arrange
  • nrow- Number of rows
  • ncol- Number of columns

Here, plots are drawn normally and independently. Then, the function is called with these plots and the number of rows and columns in a way that a grid is being defined.

Example:

R




# Define data-set columns
x1 <- c(31,13,25,31,16)
x2 <- c(12,23,43,12,22,45,32) 
x3 <- c(234,123,210)
  
label1 <- c('geek','geek-i-knack','technical-scripter',
            'content-writer','problem-setter')
label2 <- c('sun','mon','tue','wed','thur','fri','sat')  
label3 <- c('solved','attempted','unsolved')
  
# Create data frame using above 
# data column
data1 <- data.frame(x1,label1)
data2 <- data.frame(x2,label2)
data3 <- data.frame(x3,label3)
  
# set the plotting area into a 1*3 array
par(mfrow=c(1,3))    
  
# import library ggplot2 and gridExtra
library(ggplot2)
library(gridExtra)
  
# Draw the two pie chart using above datasets
plot1<-ggplot(data1, aes(x="", y=x1, fill=label1)) +
geom_bar(stat="identity", width=1) + 
coord_polar("y", start=0)
  
plot2<-ggplot(data2, aes(x="", y=x2, fill=label2)) + 
geom_bar(stat="identity", width=1) + 
coord_polar("y", start=0)
  
plot3<-ggplot(data3, aes(x="", y=x3, fill=label3)) +
geom_bar(stat="identity", width=1) + 
coord_polar("y", start=0)
  
# Use grid.arrange to put plots in columns
grid.arrange(plot1, plot2, plot3, ncol=3)


Output:



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads