ggplot:将数学表达式添加到不同位置的不同方面

ggplot: add mathematical expression to different facets in different position

我正在尝试向不同的方面添加不同的文本,但由于比例不同,我想将它们放置在每个方面的适当位置。 geom_text 允许我玩这个位置,但不能把 r^2 变成数学表达式(“2”应该是上标)。 Annotate 允许我呈现数学表达式,但不能将文本放在不同的位置(收到错误消息)。

这是一个可重现的例子:

df1=data.frame(x=c(1,10,100), y=c(1,10,100), fct=c("a", "b", "c"))
df2=data.frame(fct=c("a", "b", "c"), r2=c("r^2", "r^2", "r^2"), labs=c(7, 3, 8))
lb <- c(paste("r^2 == ", df2[1,3]), paste("r^2 == ", df2[2,3]),paste("r^2 == ", df2[3,3]))


#option 1 with geom_text
ggplot(df1, aes(x=x, y=y))+geom_point(data=df1, aes(x=x, y=y, color=fct))+facet_grid(~fct, scales='free')+geom_text(data=df2, aes(x=c(1, 10, 100), y=25, label=paste(r2,'=',labs), parse=T))

#option 2 with annotate
ggplot(df1, aes(x=x, y=y))+geom_point(data=df1, aes(x=x, y=y, color=fct))+facet_grid(~fct, scales='free')+annotate("text", x=1, y=20, label=lb, parse=TRUE)

感谢您的帮助,

家伙

ggplot 在第一个示例中警告您:

Warning: Ignoring unknown aesthetics: parse

如果你把 if 放在 aes 映射之外,那么你会得到:

ggplot(df1, aes(x=x, y=y))+
  geom_point(data=df1, aes(x=x, y=y, color=fct))+
  facet_grid(~fct, scales='free')+
  geom_text(data=df2, aes(x=c(1, 10, 100), y=25, label=paste(r2,'==',labs)), parse=T)