删除多余GGPLOT2传说(Remove extra legends in ggplot2)

2019-06-17 14:17发布

我有我试图做一个组合线,并使用点情节简单的数据帧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

结果看起来很好,但有一个例外。 它显示了一个额外的传奇alphageom_point层。

我怎样才能保持显示组色彩的传说,而不是一个显示我的阿尔法设置?

Answer 1:

美学可以设置或内映射 ggplot电话。

  • 内限定的审美aes(...)从数据映射 ,和图例创建。
  • 一种审美也可以被设置到一个值,通过定义它外面aes()

在这种情况下,似乎要设置 alpha = 0.8地图 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

对于任何映射变量可以通过使用剿图例的外观guide = 'none'在适当的scale_...呼叫。 例如。

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')

它会返回一个相同的情节

编辑 @ Joran的评论是点上,我做了我的答案更全面



Answer 2:

只需添加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)


Answer 3:

对于旧版本的GGPLOT2(版本0.9.2之前,在2012年年底发布),这个答案应该工作:

我想这与colour_scale并没有奏效。 看来, colour_scale_hue项目就像一个默认参数的函数TRUE 。 我加入scale_colour_hue(legend=FALSE)和它的工作。

我不知道这是否是在ggplot所有颜色规模项目的情况下



文章来源: Remove extra legends in ggplot2
标签: r ggplot2 legend