Visual representation of data plays a crucial role in the field of data science and analytics. It simplifies complex data and helps in understanding the underlying patterns and trends. R, an open-source language and environment for statistical computing, provides robust support for creating high-quality plots. In particular, R allows users to overlay multiple plots on the same graph. This ability is valuable when comparing multiple datasets or viewing different aspects of the same data.

In this article, we will delve into various methods to plot multiple plots on the same graph in R. We’ll start with the basic techniques using base R, then explore packages like ggplot2 and lattice, which offer more sophisticated ways to create multi-plot graphs.

## 1. Plotting Multiple Plots Using Base R

In base R, the `plot()`

function is the primary tool for creating plots. To add more plots to an existing plot, you can use the `lines()`

, `points()`

, `abline()`

, `polygon()`

, and `text()`

functions.

### 1.1 Using the lines() function

After creating an initial plot with `plot()`

, you can add more lines with the `lines()`

function:

```
# Create first plot
x <- 1:10
y1 <- x ^ 2
plot(x, y1, type = "l", col = "red", xlab = "X-axis", ylab = "Y-axis", main = "Multiple Plots")
# Add a second plot
y2 <- x ^ 1.5
lines(x, y2, type = "l", col = "blue")
```

In this example, `type = "l"`

specifies that the plot should be a line plot. The `col`

argument determines the color of the line.

### 1.2 Using the points() function

The `points()`

function can be used to add more points to an existing scatter plot:

```
# Create first scatter plot
x <- 1:10
y1 <- x ^ 2
plot(x, y1, xlab = "X-axis", ylab = "Y-axis", main = "Multiple Plots")
# Add more points
y2 <- x ^ 1.5
points(x, y2, col = "blue", pch = 20)
```

The `pch`

argument in the `points()`

function determines the shape of the points.

## 2. Overlaying Plots Using the par() Function in Base R

The `par()`

function can be used to set or query graphical parameters. One of these parameters is `new`

, which can be set to `TRUE`

to allow for new plots to be overlaid on top of existing ones.

```
# Create the first plot
plot(1:10, (1:10) ^ 2, type = "l", col = "red", xlab = "", ylab = "", main = "Overlaying Plots")
par(new = TRUE)
# Overlay the second plot
plot(1:10, (1:10) ^ 1.5, type = "l", col = "blue", xlab = "X-axis", ylab = "Y-axis")
```

In this example, the first `plot()`

call creates a plot, and `par(new = TRUE)`

allows a second plot to be added to the same graphic. Note that we left `xlab`

and `ylab`

blank in the first plot and specified them only in the second to prevent label overlapping.

## 3. Plotting Multiple Plots Using the matplot() Function

The `matplot()`

function can be used to create a multi-line plot more simply:

```
x <- 1:10
y <- matrix(1:20, nrow = 10)
matplot(x, y, type = c("p", "l"), col = c("red", "blue"), xlab = "X-axis", ylab = "Y-axis", main = "Multiple Plots with matplot()")
```

In this example, the `type`

argument specifies both points and lines to be plotted. `y`

is a matrix, each of whose columns corresponds to a line on the plot.

## 4. Using ggplot2 for Multiple Plots

`ggplot2`

is a powerful R package based on the principles of “The Grammar of Graphics” that allows you to create complex multi-layered graphics. It’s part of the `tidyverse`

suite of packages.

### 4.1 Overlaying Plots Using ggplot2

To overlay plots in `ggplot2`

, you can add layers to your graph using `+`

operator:

```
library(ggplot2)
df <- data.frame(x = 1:10, y1 = (1:10) ^ 2, y2 = (1:10) ^ 1.5)
ggplot(df, aes(x)) +
geom_line(aes(y = y1), color = "red") +
geom_line(aes(y = y2), color = "blue")
```

This code first creates a data frame `df`

with three columns: `x`

, `y1`

, and `y2`

. The `ggplot(df, aes(x))`

function initializes the plot using `df`

and sets `x`

as the common x-axis. The `geom_line()`

functions then add layers to the plot for `y1`

and `y2`

.

### 4.2 Using Facets in ggplot2

Facets in `ggplot2`

allow you to create subplots that each display one subset of the data:

```
library(ggplot2)
# Reshape the data
df <- data.frame(x = rep(1:10, 2), y = c((1:10) ^ 2, (1:10) ^ 1.5), type = rep(c("y1", "y2"), each = 10))
ggplot(df, aes(x, y, color = type)) +
geom_line() +
facet_wrap(~ type)
```

Here, `facet_wrap(~ type)`

creates separate subplots for `y1`

and `y2`

. Each subplot uses the same x-axis and y-axis.

## 5. Using lattice for Multiple Plots

`lattice`

is another powerful R package for creating complex multi-layered graphics. It’s inspired by Trellis graphics, a framework for data visualization.To create multiple plots with `lattice`

, you can use the `xyplot()`

function:

```
install.packages('lattice')
library(lattice)
df <- data.frame(x = rep(1:10, 2), y = c((1:10) ^ 2, (1:10) ^ 1.5), type = rep(c("y1", "y2"), each = 10))
xyplot(y ~ x | type, data = df, type = "l", auto.key = list(points = FALSE, lines = TRUE))
```

In this example, `y ~ x | type`

indicates that `y`

should be plotted against `x`

, with different plots created for each value of `type`

. The `auto.key`

argument is used to add a legend to the plot.

In conclusion, R offers several methods for plotting multiple plots on the same graph. The choice of method depends on your specific needs and the complexity of the data. The flexibility and versatility of R’s plotting system make it a powerful tool for data visualization.