Skip to main content
HomeTutorialsR Programming

Combining Plots

Learn how to combining multiple plots in R into one graph with either the par() or layout() functions. This page includes coding examples.
Jan 2024  · 4 min read

R makes it easy to combine multiple plots into one overall graph, using either thepar( ) or layout( ) function.

With the par( ) function, you can include the option mfrow=c(nrowsncols) to create a matrix of nrows x ncols plots that are filled in by row. mfcol=c(nrowsncols) fills in the matrix by columns.

# 4 figures arranged in 2 rows and 2 columns
attach(mtcars)
par(mfrow=c(2,2))
plot(wt,mpg, main="Scatterplot of wt vs. mpg")
plot(wt,disp, main="Scatterplot of wt vs disp")
hist(wt, main="Histogram of wt")
boxplot(wt, main="Boxplot of wt")

Layout 1.jpg

# 3 figures arranged in 3 rows and 1 column
attach(mtcars)
par(mfrow=c(3,1))
hist(wt)
hist(mpg)
hist(disp)

Layout 2.jpg

The layout( ) function has the form layout(mat) where mat is a matrix object specifying the location of the N figures to plot.

# One figure in row 1 and two figures in row 2
attach(mtcars)
layout(matrix(c(1,1,2,3), 2, 2, byrow = TRUE))
hist(wt)
hist(mpg)
hist(disp)

Layout 3.jpg

Optionally, you can include widths= and heights= options in the layout( ) function to control the size of each figure more precisely. These options have the form:

  • widths= a vector of values for the widths of columns
  • heights= a vector of values for the heights of rows

Relative widths are specified with numeric values. Absolute widths (in centimetres) are specified with the lcm() function.

# One figure in row 1 and two figures in row 2
# row 1 is 1/3 the height of row 2
# column 2 is 1/4 the width of the column 1
attach(mtcars)
layout(matrix(c(1,1,2,3), 2, 2, byrow = TRUE),
  widths=c(3,1), heights=c(1,2))
hist(wt)
hist(mpg)
hist(disp)

Layout3a 689x689.png

See help(layout) for more details.

Creating a figure arrangement with fine control

In the following example, two box plots are added to scatterplot to create an enhanced graph.

# Add boxplots to a scatterplot
par(fig=c(0,0.8,0,0.8), new=TRUE)
plot(mtcars$wt, mtcars$mpg, xlab="Car Weight",
  ylab="Miles Per Gallon")
par(fig=c(0,0.8,0.55,1), new=TRUE)
boxplot(mtcars$wt, horizontal=TRUE, axes=FALSE)
par(fig=c(0.65,1,0,0.8),new=TRUE)
boxplot(mtcars$mpg, axes=FALSE)
mtext("Enhanced Scatterplot", side=3, outer=TRUE, line=-3)

Layout 4 Advanced Graphs.jpg

To understand this graph, think of the full graph area as going from (0,0) in the lower left corner to (1,1) in the upper right corner. The format of the fig= parameter is a numerical vector of the form c(x1, x2, y1, y2). The first fig= sets up the scatterplot going from 0 to 0.8 on the x axis and 0 to 0.8 on the y axis. The top boxplot goes from 0 to 0.8 on the x axis and 0.55 to 1 on the y axis. I chose 0.55 rather than 0.8 so that the top figure will be pulled closer to the scatter plot. The right hand boxplot goes from 0.65 to 1 on the x axis and 0 to 0.8 on the y axis. Again, I chose a value to pull the right hand boxplot closer to the scatterplot. You have to experiment to get it just right.

fig= starts a new plot, so to add to an existing plot use new=TRUE.

You can use this to combine several plots in any arrangement into one graph.

To Practice

Try the free first chapter of this interactive data visualization course, which covers combining plots.

Topics
Related

tutorial

Merging Datasets in R

In this tutorial, you'll learn to join multiple datasets in R.
Tom Jeon's photo

Tom Jeon

8 min

tutorial

Scatterplot in R

Learn how to create a scatterplot in R. The basic function is plot(x, y), where x and y are numeric vectors denoting the (x,y) points to plot.
DataCamp Team's photo

DataCamp Team

tutorial

15 Questions All R Users Have About Plots

There are different types of R plots, ranging from the basic graph types to complex types of graphs. Here we discover how to create these.
Karlijn Willems's photo

Karlijn Willems

39 min

tutorial

Multiple Linear Regression in R: Tutorial With Examples

A complete overview to understanding multiple linear regressions in R through examples.
Zoumana Keita 's photo

Zoumana Keita

12 min

tutorial

Merging Data in R

Merging data is a common task in data analysis, especially when working with large datasets. The merge function in R is a powerful tool that allows you to combine two or more datasets based on shared variables.
DataCamp Team's photo

DataCamp Team

4 min

tutorial

Facets for ggplot2 in R

In this tutorial, you'll learn how to make the most of ggplots facetting functions.
DataCamp Team's photo

DataCamp Team

8 min

See MoreSee More