删除ggplot2中的额外图例

我有一个简单的数据框,我正在试图使用ggplot2做一个组合的线和点图。 假设我的数据如下所示:

df <- data.frame(x=rep(1:10,2), y=c(1:10,11:20), group=c(rep("a",10),rep("b",10))) 

我正在试图做一个情节:

 g <- ggplot(df, aes(x=x, y=y, group=group)) g <- g + geom_line(aes(colour=group)) g <- g + geom_point(aes(colour=group, alpha = .8)) g 

结果看起来很好,只有一个例外。 它有一个额外的图例,显示我的geom_point图层的alpha。

geom_point透明度的额外图例

如何让图例显示组颜色,但不显示我的alpha设置?

可以在ggplot调用中设置映射美学。

  • aes(...)定义的美学是从数据映射而来的,并创build了一个图例。
  • 审美也可以设定为一个单一的价值,在aes()之外定义它。

在这种情况下,看起来你希望设置 alpha = 0.8map colour = group

去做这个,

alpha = 0.8放在aes()定义之外。

 g <- ggplot(df, aes(x = x, y = y, group = group)) g <- g + geom_line(aes(colour = group)) g <- g + geom_point(aes(colour = group), alpha = 0.8) g 

在这里输入图像描述

对于任何映射的variables,您可以通过在适当的scale_...调用中使用guide = 'none'来抑制图例的外观。 例如。

 g2 <- ggplot(df, aes(x = x, y = y, group = group)) + geom_line(aes(colour = group)) + geom_point(aes(colour = group, alpha = 0.8)) g2 + scale_alpha(guide = 'none') 

这将返回一个相同的情节

编辑 @乔兰的评论是现货,我已经使我的答案更全面

只需在show.legend = F的部分之后添加show.legend = F代码即可。

 g <- ggplot(df, aes(x=x, y=y, group=group)) g <- g + geom_line(aes(colour=group)) g <- g + geom_point(aes(colour=group, alpha = .8), show.legend = F) 

对于旧版本的ggplot2(2012年末发布的0.9.2之前的版本),这个答案应该可以工作:

我用colour_scale尝试了这个,并没有奏效。 看起来, colour_scale_hue项目像一个默认参数为TRUE的函数。 我添加了scale_colour_hue(legend=FALSE) ,它工作。

我不确定这是否是ggplot中所有色阶项目的情况