How do I change the outline colours of a boxplot with ggplot?
11,461
You have to:
- Add
color = clarity
to aesthetics - Add
scale_color_manual
to ggplot object with wanted colors - Name
scale_color_manual
the same way asscale_fill_manual
to get single combined legend
Code :
library(dplyr)
library(ggplot2)
diamonds %>%
filter(clarity %in% c("I1","SI2")) %>%
ggplot(aes(x= color, y= price, fill = clarity, color = clarity))+
geom_boxplot()+
scale_fill_manual(name= "Clarity", values = c("grey40", "lightskyblue"))+
scale_color_manual(name = "Clarity", values = c("black", "blue"))+
facet_wrap( ~ cut)
Plot:
Related videos on Youtube
Author by
mckisa
Updated on June 04, 2022Comments
-
mckisa almost 2 years
My data has values which are all the same so they are coming up as just a line in a box plot. This, however, means that I can't tell the difference between groups as the fill doesn't show up. How can I change the outlines of the boxplot to be a specific colour.
Note: I do not want all the outline colours to be the same colour, as in the next line of code:
library(dplyr) library(ggplot2) diamonds %>% filter(clarity %in% c("I1","SI2")) %>% ggplot(aes(x= color, y= price, fill = clarity))+ geom_boxplot(colour = "blue")+ scale_fill_manual(name= "Clarity", values = c("grey40", "lightskyblue"))+ facet_wrap(~cut)
Instead, I would like all the plots for I1 (filled with grey40) to be outlined in black while the plots for SI2 (filled with lightskyblue) to be outlined in blue.
The following don't seem to work
geom_boxplot(colour = c("black","blue"))+
OR
scale_color_identity(c("black", "blue"))+
OR
scale_color_manual(values = c("black", "blue"))+
-
Andrey Kolyadin over 6 yearsAdd
colour = clarity
toaes()
and usescale_color_manual(values = c("black", "blue"))
. -
lukeA over 6 yearsAnd remove
colour = "blue"
, because that would override the aes mapping. In addition, you probably want to name the color scale Clarity, too, because otherwise you get two legends. -
mckisa over 6 yearsPerfect, thank you.
-
-
mckisa over 6 yearsThank you! Nice and simple. I had tried each solution individually but not thought to put them together.