删除图例ggplot 2.2

时间:2016-02-25 04:19:16

标签: r ggplot2 legend

我试图保留一层(平滑)的图例并删除另一层(点)的图例。我尝试使用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() 

enter image description here

4 个答案:

答案 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)

enter image description here

删除所有图例:@ 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)

enter image description here

答案 3 :(得分:12)

如果图表同时使用了fillcolor美观性,则可以通过以下方式删除图例:

+ guides(fill=FALSE, color=FALSE)