【发布时间】:2020-01-25 02:54:48
【问题描述】:
在ggplot2的美学中也使用填充时,有没有办法控制颜色图例的填充?
例如。
dat<-data.frame(id=as.character(1:4), var1=rep(LETTERS[1:2], 2), var2=rep(LETTERS[3:4], 2))
dat
library(ggplot2)
ggplot(dat)+
geom_bar(aes(id, color=var1, fill=var2))+
scale_color_manual(values=c("A"="black", "B"="grey"))+
theme_light()
在这个图例中,很难看到颜色图例中深灰色填充周围的浅灰色边框。我承认指定颜色并填充同一个图可能不是一个好习惯,因为很难理解哪种颜色意味着什么,并且填充对象周围的彩色边框很难区分,但我该怎么做如果我想?
通过在图中手动指定填充,可以在不指定填充的情况下控制图例中的填充颜色。
ggplot(dat)+
geom_bar(aes(id, color=var1), fill="white")+
theme_light()
我认为有一种方法可以使用主题中的参数来控制它,但是theme(legend.background=element_rect()) 控制了整个图例的背景(这是正确的)
ggplot(dat)+
geom_bar(aes(id, color=var1, fill=var2))+
scale_color_manual(values=c("A"="black", "B"="grey"))+
theme_light()+
theme(legend.background = element_rect(fill="blue"))
同样在主题中,theme(legend.key = element_rect(fill="blue")) 仅在图例中的var2 框周围添加一条细蓝线,legend.box 控制多个图例的排列(“水平”或“垂直”),theme(legend.box.background = element_rect(fill="blue")) 颜色var1 和 var2 传说之间的背景。
我想也许图例使用 NA 的默认值进行填充,所以我尝试使用 scale_color_discrete() 手动指定它
ggplot(dat)+
geom_bar(aes(id, color=var1, fill=var2))+
scale_color_manual(values=c("A"="black", "B"="grey",
na.translate=TRUE, na.value = "white"))+
theme_light()
看起来和第一个情节一样。
这似乎应该由theme() 或scale_color_manual 中的参数控制,但我似乎无法弄清楚。
干杯
【问题讨论】: