Change Size of Plot when Drawing Multiple Plots in R (2 Examples)

 

In this R tutorial you’ll learn how to draw an unbalanced grid of plots.

The content of the post looks as follows:

So without further ado, let’s get started!

 

Creation of Example Data

Consider the following example data.

set.seed(67428)                              # Create example data frame
data <- data.frame(x = rnorm(100),
                   y = rnorm(100))
head(data)                                   # Print head of example data frame

 

table 1 data frame change size when drawing multiple plots r

 

Have a look at the previous table. It shows the first six data points of our example data, and that our data consists of two randomly distributed numerical columns.

 

Example 1: Change Size of Plots in Base R Grid Layout

In Example 1, I’ll explain how to create a grid of plots with different sizes using the basic installation of the R programming language.

We can specify a grid of multiple graphics with the same size side-by-side using the par function and the mfrow argument:

par(mfrow = c(2, 2))                         # Specify grid of plots

Next, we simply have to draw a few graphs to appear in our grid of plots:

plot(data$x, data$y)                         # Draw plots
plot(data$y, type = "l")
hist(data$x)
boxplot(data$x)

 

r graph figure 1 change size when drawing multiple plots r

 

The output of the previously shown R syntax is shown in Figure 1: We have drawn four different graphics in two rows and two columns. All graphs have the same size.

If we want to change the size of graphics in a grid of Base R plots, we first have to specify a matrix corresponding to the positions of each plot:

mat_layout <- matrix(c(1, 1, 2, 3, 4, 4),    # Specify layout matrix
                     nrow = 2,
                     byrow = TRUE)
mat_layout                                   # Print layout matrix

 

table 2 matrix change size when drawing multiple plots r

 

The output of the previous R programming syntax is shown in Table 2 – We have specified the positions where our plots should appear. Note that the plots No. 1 and No. 4 appear at two locations.

Next, we have to apply the layout function to our matrix to arrange the grid of plots according to this matrix:

layout(mat_layout)                           # Apply layout function

Finally, we can create our grid of plots with unbalanced sizes:

plot(data$x, data$y)                         # Draw plots with different sizes
plot(data$y, type = "l")
hist(data$x)
boxplot(data$x)

 

r graph figure 2 change size when drawing multiple plots r

 

Figure 2 shows the output of the previous code: A grid layout of Base R plots with different sizes.

 

Example 2: Change Size of Plots in ggplot2 Grid Layout

This example explains how to draw a grid of ggplot2 plots with different sizes.

In order to use the functions of the ggplot2 package, we first need to install and load ggplot2:

install.packages("ggplot2")                  # Install ggplot2 package
library("ggplot2")                           # Load ggplot2

Next, we have to create multiple ggplot2 plot objects that contain the graphs we want to illustrate in our plot layout:

ggp1 <- ggplot(data, aes(x, y)) +            # Create ggplot2 plot objects
  geom_point()
ggp2 <- ggplot(data, aes(x = 1:nrow(data), y)) +
  geom_line()
ggp3 <- ggplot(data, aes(x)) +
  geom_histogram()
ggp4 <- ggplot(data, aes(x)) +
  geom_boxplot()

In order to draw our ggplot2 plots side-by-side, we first have to install and load the patchwork software package:

install.packages("patchwork")                # Install patchwork package
library("patchwork")                         # Load patchwork

Next, we can arrange our ggplot2 plots in a plot layout with equal sizes as shown below:

(ggp1 + ggp2) /                              # Draw grid of ggplot2 plots
  (ggp3 + ggp4)

 

r graph figure 3 change size when drawing multiple plots r

 

In Figure 3 you can see that we have drawn all the ggplot2 plots side-by-side by running the previous R programming code.

In case we want to draw ggplot2 plots with different sizes, we have to define the grid design first:

patch_design <- c(area(1, 1, 1, 2),          # Specify design of grid
                  area(1, 3, 1, 3),
                  area(2, 1, 2, 1),
                  area(2, 2, 2, 3))
patch_design                                 # Print design of grid
# 4 patch areas, spanning 3 columns and 2 rows
# 
#     t l b r
# 1:  1 1 1 2
# 2:  1 3 1 3
# 3:  2 1 2 1
# 4:  2 2 2 3

The previous output shows the top, left, bottom, and right positions of our four ggplot2 graphs.

Next, we can draw our grid of ggplot2 graphics according to this design:

ggp1 + ggp2 + ggp3 + ggp4 +                  # Grid of ggplot2 plots with manual design
  plot_layout(design = patch_design)

 

r graph figure 4 change size when drawing multiple plots r

 

The output of the previously shown R programming code is shown in Figure 4: A grid of ggplot2 plots with different sizes.

 

Video & Further Resources

Some time ago I have released a video on my YouTube channel, which shows the topics of this tutorial. You can find the video below.

 

Please accept YouTube cookies to play this video. By accepting you will be accessing content from YouTube, a service provided by an external third party.

YouTube Content Consent Button Thumbnail

YouTube privacy policy

If you accept this notice, your choice will be saved and the page will refresh.

 

In addition, you could have a look at the other posts on my website. I have released numerous tutorials about similar topics such as graphics in R, plot legends, and ggplot2 already.

 

In summary: This tutorial has shown how to draw plots with different sizes side-by-side in the R programming language. In case you have additional questions and/or comments, please let me know in the comments below.

 

Subscribe to the Statistics Globe Newsletter

Get regular updates on the latest tutorials, offers & news at Statistics Globe.
I hate spam & you may opt out anytime: Privacy Policy.


Leave a Reply

Your email address will not be published. Required fields are marked *

Fill out this field
Fill out this field
Please enter a valid email address.

Top