因此,一些帖子已经解决了如何在ggplot中删除不需要的图例 .

wonderful answer发布到"Remove extra legends in ggplot2"建议:

对于任何映射变量,您可以使用适当比例_...中的guide ='none'来抑制图例的外观 .

但是,我遇到了 unwanted legends being created by adding the group aesthetic 的问题 . 我尝试了缩放方法,但它似乎不适用于group参数:

could not find function "scale_group"

搜索here也没有提供任何关于修改组美学的正确函数调用的见解 .

用户@joran provided以上链接帖子中的以下见解:

那是因为群体美学本身并没有产生任何尺度或指南 . 它总是在修改别的东西 . 你永远不会得到一个群体美学的传奇 .


Example

所以我可以将 show.legend = FALSE 添加到包含 group 的函数调用中以删除该函数的任何图例,但如果我希望该调用的其他部分(即美学)包含在图例中,则无法解决此问题 .

#Set Up Example:

library(lme4)
library(ggplot2)

mod <- lmer(mpg ~ hp + (1 |cyl), data = mtcars)
pred <- predict(mod,re.form = NA)
pdat <- data.frame(mtcars[,c('hp','cyl')], mpg = pred, up = pred+1, low = pred-1)

show.legend = F 添加到函数调用按预期工作:

gp <- 
  ggplot(data = mtcars, aes(x = hp, y = mpg, color = cyl, group = cyl), show.legend = F) +
  geom_point(aes(group = cyl),show.legend = F) +
  facet_wrap(~cyl) + 
  geom_line(data = pdat, aes(group = cyl),show.legend = F, color = 'orange')

但是当我想基于相同的 group (因此不能使用 show.legend = F 参数)为 geom_ribbon 填充添加图例时,我再次获得了 group 的图例...

gp + geom_ribbon(data = pdat, aes(ymin = low, ymax = up, group = cyl, fill = 'mod'), alpha = 0.3) + 
scale_fill_manual(values=c("orange"), name="model")

The outputs:

enter image description here