我试图保留一层(平滑)的图例并删除另一层(点)的图例。我尝试使用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()
答案 0 :(得分:378)
来自r cookbook,其中bp是你的ggplot:
删除特定美学(填充)的图例:
bp + guides(fill=FALSE)
指定比例时也可以这样做:
bp + scale_fill_discrete(guide=FALSE)
删除所有图例:
bp + theme(legend.position="none")
答案 1 :(得分:63)
可能还有另一种解决办法:
你的代码是:
geom_point(aes(..., show.legend = FALSE))
您可以在<{em> show.legend
电话后指定aes
参数:
geom_point(aes(...), show.legend = FALSE)
然后相应的图例应该消失
答案 2 :(得分:20)
由于问题和 user3490026 的答案是搜索的热门话题,因此,我提供了一个可重现的示例,并简要说明了到目前为止的建议,并提供了一个明确解决OP的解决方案问题。
def mousePressEvent(self, event):
super(MyView,self).mousePressEvent(event)
p = self.mapToScene(event.pos())
item = self.scene.itemAt(p)
if item is not None:
print(item.scenePos())
可以做的一件令人困惑的事情是,当某些图例与同一个变量关联时,它会自动将它们混合在一起。例如,ggplot2
出现两次,一次出现在factor(gear)
,一次出现在linetype
,从而产生一个合并的图例。相反,fill
有其自己的图例条目,因为它不与gear
相同。到目前为止提供的解决方案通常效果很好。但有时,您可能需要覆盖指南。请参阅底部的最后一个示例。
factor(gear)
删除所有图例:@ user3490026
# 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()
删除所有图例:@duhaime
p + theme(legend.position = "none")
关闭图例:@Tjebo
p + guides(fill = FALSE, color = FALSE, linetype = FALSE, shape = FALSE)
删除填充,以使线型可见
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()
通过scale_fill_函数与上面相同:
p + guides(fill = FALSE)
现在可以回答OP的请求
”可保留一层图例(平滑)并删除图例 其他(点)”
临时关闭某些功能
p + scale_fill_discrete(guide = FALSE)
答案 3 :(得分:12)
如果图表同时使用了fill
和color
美观性,则可以通过以下方式删除图例:
+ guides(fill=FALSE, color=FALSE)