删除 ggplot2中的额外图例

我有一个简单的数据框架,我正在尝试做一个组合线和点使用 ggplot2绘图。假设我的数据是这样的:

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

And I'm trying to make a plot:

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

Extra Legend for <code>geom_point</code> transparency

How can I keep the legend showing group colors, but not the one that shows my alpha settings?

121068 次浏览

美学可以是 准备好了地图在一个 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

enter image description here

对于任何 地图变量,您都可以通过在适当的 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')

这将返回一个相同的情节

@Joran's comment is spot-on, I've made my answer more comprehensive

对于老版本的 ggplot2(0.9.2之前的版本,在2012年底发布) ,这个答案应该可行:

我试过这与 colour_scale和它没有工作。看起来 colour_scale_hue项的工作方式类似于带有默认参数 TRUE的函数。我加入了 scale_colour_hue(legend=FALSE)并且成功了。

我不确定这是否适用于 ggplot 中的所有颜色比例项

Just add the show.legend = F code after the part where you don't want it.

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)

另一个简单的选项是使用函数 guides,它可以从图例中删除特定的美感(填充、 alpha、颜色)或多个。下面是一个可重复的示例,它只去除 alpha 图例,并同时去除 alpha 和 color:

df <- data.frame(x=rep(1:10,2), y=c(1:10,11:20),
group=c(rep("a",10),rep("b",10)))
library(ggplot2)
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))
# Remove legend alpha
g + guides(alpha = "none")

# Remove legend alpha and color
g + guides(alpha = "none", color = "none")

创建于2022-08-21与 Reprex v2.0.2