# 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))

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)```

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```

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)```

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

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

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)```

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)```

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.

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