问题
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"))+
回答1:
You have to:
- Add
color = clarityto aesthetics - Add
scale_color_manualto ggplot object with wanted colors - Name
scale_color_manualthe same way asscale_fill_manualto 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:
来源:https://stackoverflow.com/questions/46907040/how-do-i-change-the-outline-colours-of-a-boxplot-with-ggplot