在ggplot2中,如何在facet_wrap中按组添加文本?

4

这里是一个例子:

library(ggplot2)
set.seed(112)
df<-data.frame(g=sample(c("A", "B"), 100, T),
           x=rnorm(100),
           y=rnorm(100,2,3),
           f=sample(c("i","ii"), 100, T))
ggplot(df, aes(x=x,y=y, colour=factor(g)))+
geom_point()+geom_smooth(method="lm", fill="NA")+facet_wrap(~f)

我的问题是如何按组将文本添加到第二个图形中。
请参考以下示例:enter image description here enter image description here

1
你是不是想说 fill=NA(而不是 fill="NA")?前者将消除置信区间带。但是,你也可以使用 se=FALSE 来防止首先添加置信区间带。 - eipi10
2个回答

5
你可以手动创建一个新的数据框,并将该层添加到原始图形上。
df_text <- data.frame(g=rep(c("A", "B")), x=-2, y=c(9, 8, 9, 8),
                      f=rep(c("i", "ii"), each=2),
                      text=c("R=0.2", "R=-0.3", "R=-0.05", "R=0.2"))

ggplot(df, aes(x=x,y=y, colour=factor(g))) +
  geom_point() + geom_smooth(method="lm", fill="NA") +
  geom_text(data=df_text, aes(x=x, y=y, color=factor(g), label=text),
  fontface="bold", hjust=0, size=5, show.legend=FALSE) + 
  facet_wrap(~f)

enter image description here


为了对齐文本,您可以在geom_text中放置hjust=0 - JasonWang
1
不错。我正准备发布一个几乎相同的答案 :-) - Jaap
没问题,@DavidZ! - JasonWang

3
另一种选择是即时计算相关性,并使用因子变量

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