在ggplot2中仅向一个面板添加stat_smooth

18

我有一些数据,在一个因素的某个水平上,存在显著相关性。在另一个水平上,没有相关性。将它们并列绘制很简单。使用stat_smooth为两者都添加一条线也很直接。但是,我不想在其中一个方面显示线或其填充。是否有一种简单的方法来实现这一点?也许可以指定一个空颜色作为填充并以某种方式为其中一条线指定颜色?

2个回答

42

不要考虑选择一个分面,而是考虑向stat_smooth提供数据的子集:

ggplot(df, aes(x, y)) +
  geom_point() + 
  geom_smooth(data = subset(df, z =="a")) + 
  facet_wrap(~ z)

3

当然,后来我自己回答了这个问题。但是,有没有更好的方法来解决这个问题呢?我想知道是否可以将不同的函数适配到不同的面板上。

一种技术是使用+ scale_fill_manual和scale_colour_manual。它们允许人们指定要使用的颜色。因此,在这种情况下,假设您有

a<-qplot(x, y, facets=~z)+stat_smooth(method="lm", aes(colour=z, fill=z))

您可以使用以下方法指定填充和颜色的颜色。请注意,第二种颜色是透明的,因为它使用了一个十六进制值,最后两个数字表示透明度。所以,00代表完全透明。

a+stat_fill_manual(values=c("grey", "#11111100"))+scale_colour_manual(values=c("blue", "#11111100"))

这听起来是一个合理的解决方案。通常情况下,如果你正在使用facets(分面),你确实想要在每个facet中放置相同的内容。如果不这样做,最好采用其他方法。请查看这个问题(以及我的答案)获取更多信息:https://dev59.com/GXI_5IYBdhLWcg3wFu_L - Harlan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接