Guy*_*Guy 222 r legend ggplot2
我试图保持一层的图例(平滑)并删除另一层(点)的图例.我试过用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()
Run Code Online (Sandbox Code Playgroud)
小智 409
来自r cookbook,其中bp是你的ggplot:
删除特定美学(填充)的图例:
bp + guides(fill=FALSE)
Run Code Online (Sandbox Code Playgroud)
在指定比例时也可以这样做:
bp + scale_fill_discrete(guide=FALSE)
Run Code Online (Sandbox Code Playgroud)
这将删除所有图例:
bp + theme(legend.position="none")
Run Code Online (Sandbox Code Playgroud)
Tje*_*ebo 72
可能还有另一个解决方案:
您的代码是:
geom_point(aes(..., show.legend = FALSE))
Run Code Online (Sandbox Code Playgroud)
您可以在调用后指定show.legend
参数:aes
geom_point(aes(...), show.legend = FALSE)
Run Code Online (Sandbox Code Playgroud)
然后相应的图例应该消失
Pat*_*ckT 34
由于问题和用户34000026的回答是热门搜索,我已经做了一个可重现的例子,并简要说明了迄今为止提出的建议,以及明确解决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()
Run Code Online (Sandbox Code Playgroud)
删除所有图例:@ user3490026
p + theme(legend.position = "none")
Run Code Online (Sandbox Code Playgroud)
删除所有图例:@duhaime
p + guides(fill = FALSE, color = FALSE, linetype = FALSE, shape = FALSE)
Run Code Online (Sandbox Code Playgroud)
关掉传说:@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()
Run Code Online (Sandbox Code Playgroud)
删除填充以使线型变得可见
p + guides(fill = FALSE)
Run Code Online (Sandbox Code Playgroud)
通过scale_fill_函数与上面相同:
p + scale_fill_discrete(guide = FALSE)
Run Code Online (Sandbox Code Playgroud)
现在可以回答OP的要求
"保持一层的图例(平滑)并删除另一层的图例(点)"
特别是在临时性的情况下关闭一些
p + guides(fill = guide_legend(override.aes = list(color = NA)),
color = FALSE,
shape = FALSE)
Run Code Online (Sandbox Code Playgroud)
duh*_*ime 13
如果您的图表同时使用fill
和color
美观,则可以删除图例:
+ guides(fill=FALSE, color=FALSE)
Run Code Online (Sandbox Code Playgroud)