我试图保持一层(平滑)的图例并删除另一层(点)的图例。我尝试用 guides(colour = FALSE)
和 geom_point(aes(color = vs), show.legend = FALSE)
关闭图例。
编辑:由于这个问题及其答案很受欢迎,一个可重复的例子似乎是有序的:
library(ggplot2)
ggplot(data = mtcars, aes(x = mpg, y = disp, group = gear)) +
geom_point(aes(color = vs)) +
geom_point(aes(shape = factor(cyl))) +
geom_line(aes(linetype = factor(gear))) +
geom_smooth(aes(fill = factor(gear), color = gear)) +
theme_bw()
https://i.stack.imgur.com/Im5Kh.png
来自 r cookbook,其中 bp 是您的 ggplot:
删除特定美学(填充)的图例:
bp + guides(fill="none")
指定比例时也可以这样做:
bp + scale_fill_discrete(guide="none")
这将删除所有图例:
bp + theme(legend.position="none")
可能有另一种解决方案:您的代码是:
geom_point(aes(..., show.legend = FALSE))
您可以在 aes
调用之后指定 show.legend
参数:
geom_point(aes(...), show.legend = FALSE)
那么相应的图例应该消失
scale_label
命令(这也没有意义),并且 guide(label = FALSE)
也不起作用。谢谢!
由于问题和 user3490026 的答案是热门搜索,因此我制作了一个可重复的示例并简要说明了迄今为止提出的建议,以及明确解决 OP 问题的解决方案。
ggplot2
所做的一件可能令人困惑的事情是,当某些图例与同一个变量相关联时,它会自动混合这些图例。例如,factor(gear)
出现两次,一次用于 linetype
,一次用于 fill
,从而形成一个组合图例。相比之下,gear
有自己的图例条目,因为它不被视为与 factor(gear)
相同。到目前为止提供的解决方案通常效果很好。但有时,您可能需要覆盖指南。请参阅底部的最后一个示例。
# reproducible example:
library(ggplot2)
p <- ggplot(data = mtcars, aes(x = mpg, y = disp, group = gear)) +
geom_point(aes(color = vs)) +
geom_point(aes(shape = factor(cyl))) +
geom_line(aes(linetype = factor(gear))) +
geom_smooth(aes(fill = factor(gear), color = gear)) +
theme_bw()
https://i.stack.imgur.com/PPcHn.png
删除所有图例:@user3490026
p + theme(legend.position = "none")
删除所有图例:@duhaime
p + guides(fill = FALSE, color = FALSE, linetype = FALSE, shape = FALSE)
关闭图例:@Tjebo
ggplot(data = mtcars, aes(x = mpg, y = disp, group = gear)) +
geom_point(aes(color = vs), show.legend = FALSE) +
geom_point(aes(shape = factor(cyl)), show.legend = FALSE) +
geom_line(aes(linetype = factor(gear)), show.legend = FALSE) +
geom_smooth(aes(fill = factor(gear), color = gear), show.legend = FALSE) +
theme_bw()
删除填充,使线型变得可见
p + guides(fill = FALSE)
通过 scale_fill_ 函数与上述相同:
p + scale_fill_discrete(guide = FALSE)
现在是对 OP 要求的一种可能答案
“保持一层(平滑)的图例并删除另一层(点)的图例”
打开一些关闭一些临时的事后
p + guides(fill = guide_legend(override.aes = list(color = NA)),
color = FALSE,
shape = FALSE)
https://i.stack.imgur.com/HG211.png
warnings()
,您将看到蓝丝带未显示的原因。
se
的图例,它就没有什么意义了。在 github 上可能值得一个问题,但我现在没有精力......
如果您的图表同时使用 fill
和 color
美学,您可以删除图例:
+ guides(fill=FALSE, color=FALSE)
theme_bw()
可能会干扰使用theme()
完成的任何定义。使用theme_bw()
时,请确保在更改任何其他主题选项之前将其添加到绘图中。bp + theme(legend.position="none") + theme_classic()
时,传说又回来了。那么如何去除呢?bp + theme_classic() + theme(legend.position="none")
guide=FALSE
已被弃用。现在他们建议使用guide="none"