We know that `ggplot2` includes a special `+` method for ggplot objects, which uses to add layers to plots.

```
library(ggplot2)
df <- structure(list(Percent = c(1, 2, 3, 4, 5), 
               Test = c(4, 2, 3, 5, 2),
               Train = c(10, 12, 10, 13, 15)), 
          .Names = c("Percent", "Test", "Train"), 
          row.names = c(NA, 5L), class = "data.frame")

ggplot(df, aes(x = Percent)) + 
  geom_point(aes(y = Test), colour = "red") + 
  geom_line(aes(y = Test), colour = "red")

```

Out:

[![enter image description here](https://i.stack.imgur.com/9tQjF.png)](https://i.stack.imgur.com/9tQjF.png)

I turned the above plotting program into a function `plot_func`, but I hope we could control whether I need to add scatter via a parameter, not by commenting out this line: `geom_point(aes(y = Test ), colour = "red") +`.

```
plot_func <- function(data){
  p <- ggplot(df, aes(x = Percent)) + 
    geom_point(aes(y = Test), colour = "red") + 
    geom_line(aes(y = Test), colour = "red")
  return(print(p))
}

plot_func(df)

```

The expected result would be something like this. Suppose we have a parameter `add_point` in our function `plot_func`, and we set `add_point=FALSE`, it will achieve a plot similar to that after commenting out `geom_point(aes(y = Test), colour = "red") +` .

How to achieve this? Thanks.

```
plot_func <- function(data, add_point=FALSE){
  p <- ggplot(df, aes(x = Percent)) + 
    # geom_point(aes(y = Test), colour = "red") + 
    geom_line(aes(y = Test), colour = "red")
  return(print(p))
}

plot_func(df)

```

Out:

[![enter image description here](https://i.stack.imgur.com/jiZAt.png)](https://i.stack.imgur.com/jiZAt.png)