R 注释ggplot2中每个面上的组平均值

R 注释ggplot2中每个面上的组平均值,r,ggplot2,R,Ggplot2,我想在ggplot2图形中为每个刻面组指定平均值。 我试过这个: library(ggplot2) p <- ggplot(mtcars, aes(mpg, wt)) + geom_point() p <- p + facet_grid(. ~ cyl) p <- p + annotate("text", label = mean(as.numeric(mtcars$mpg)), size = 4, x = 15, y = 5) p 按照另一个静止的例子,我在每个方面都实现了

我想在ggplot2图形中为每个刻面组指定平均值。 我试过这个:

library(ggplot2)
p <- ggplot(mtcars, aes(mpg, wt)) + geom_point()
p <- p + facet_grid(. ~ cyl)
p <- p + annotate("text", label = mean(as.numeric(mtcars$mpg)), size = 4, x = 15, y = 5)
p
按照另一个静止的例子,我在每个方面都实现了平均值,但现在我得到了额外的树空网格: 图书馆GGPLOT2

p <- ggplot(mtcars, aes(mpg, wt)) + geom_point()
p <- p + facet_grid(cols=vars(cyl))
ann_text <- data.frame(mpg = c(15, 15, 15),
                       wt = c(5,5,5),
                       lab = c(mean(as.numeric(mtcars$mpg[mtcars$cyl==4])),
                               mean(as.numeric(mtcars$mpg[mtcars$cyl==6])),
                               mean(as.numeric(mtcars$mpg[mtcars$cyl==8]))),
                       cyl =  c("4","6","8"))
p <- p + geom_text(data=ann_text, label=ann_text$lab)
p

一种可行的方法是使用原始df中的标签创建一个新的col:

mtcars0=mtcars%>%group_by(cyl)%>%mutate(MeanMpg=round(mean(mpg),2))

p <- ggplot(mtcars0, aes(mpg, wt)) + geom_point() + facet_grid(. ~ cyl) + 
  geom_text(aes(mpg,wt,label=MeanMpg), size = 4, x = 15, y = 5)
p
如果要使用annotate,可以单独定义标签:

labels<-mtcars%>%group_by(cyl)%>%summarize(MeanMpg=round(mean(mpg),2))%>%.$MeanMpg

p <- ggplot(mtcars0, aes(mpg, wt)) + geom_point() + facet_grid(. ~ cyl) +                                                            
  annotate("text", label = labels, size = 4, x = 15, y = 5)
p 

在每个方面注释不同值的方法是,首先为每个方面变量创建一个具有平均值的数据帧,然后注释数据帧中的值。参见示例。在该示例中,我不明白这如何适用于我的案例。他们只将一个文本放在一个FacesScroll-down中-第一个答案仅用文本注释一个方面,但下面的一个答案显示了如何用不同的文本值注释每个方面。