I'm trying to create some boxplots in R. I've been using both ggboxplot and ggplot. This is my code and output so far:

ggboxplot:

```
ggboxplot(shp_PA@data, x = "hei_1998to2007_cat", y = "adjrate.2008to2017", 
          xlab = "Hazardous Exposure Index Jenks", 
          ylab = "Lung Cancer Incidence Rate",
          color = "red",
          add = c("jitter", "mean"), 
          add.params = list(color = "black", shape=20)) 

```

![ggboxplot boxplot](https://i.stack.imgur.com/MeNpR.png)

ggplot:

```
shp_PA@data %>%
  ggplot(aes(x=hei_1998to2007_cat, y=adjrate.2008to2017)) +
  geom_boxplot(colour = "red") + 
  geom_jitter(color="black", size=0.75) +
  stat_summary(fun=mean, geom="point", shape=4, size=3, color="black") +
  xlab("Hazardous Exposure Index Jenks") + 
  ylab("Lung Cancer Incidence Rate")

```

![ggplot boxplot](https://i.stack.imgur.com/2Cww2.png)

My main interest right now is in putting a legend on each boxplot that has the symbol used to depict the mean, and the word "Mean" next to it. In base R, its as simple as putting something like

```
legend("topright", legend=c("Mean"),pch=5, col="red")

```

but I can't figure it out in ggboxplot or ggplot. Most of the things I've seen online discuss modifying a legend that is already present.

One other thing I'm wondering how to do is specific to ggboxplot. I want to be able to make the color and shape of the jitter points different from the symbol for the mean. I've tried changing the add.params code to

```
add.params = list(color = c("black", "blue"), shape=c(20,4))

```

but I get the error

```
Error: Aesthetics must be either length 1 or the same as the data (213): shape and colour

```

Any help is greatly appreciated!

Edit: Add reproducible example using iris dataset in R

ggboxplot:

```
ggboxplot(iris, x = "Species", y = "Sepal.Length", 
          color = "red",
          add = c("jitter", "mean"), 
          add.params = list(color = "black", shape=20)) 

```

ggplot:

```
ggplot(data=iris, aes(x=Species, y=Sepal.Length)) +
  geom_boxplot(colour = "red") + 
  geom_jitter(color="black", size=0.75) +
  stat_summary(fun=mean, geom="point", shape=4, size=3, color="black")

```

Again, I'd like to add a legend with the symbol used to depict the mean and the word "Mean", and be able to use ggboxplot to have the color and shape of the jitter and mean to be different.