微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ggplot2:在 facet_grid 中按组添加水平线

如何解决ggplot2:在 facet_grid 中按组添加水平线

我想按组绘制带有水平线的点图。 df 对象存储点,df.line 对象存储我想添加到点图中的线。水平线不是点的均值/中值,它们是我想在这个图中展示的一些标准。

我尝试了 gome_hlinegeom_linegeom_errorbarstat_summary。但它们都不是我想要的。

谁能教我怎么做?

library(ggplot2)
library(tidytext)
set.seed(42)
df=data.frame(site=c(rep("a",5),rep("b",rep("c",5)),sample=c(1:5,1:5,1:5),value=c(runif(5,min=0.54,max=0.56),runif(5,min=0.52,max=0.6),min=0.3,max=0.4)),condition=c(rep("c1",rep("c2",5)))
df.line=data.frame(site=c("a","b","c"),standard=c(0.55,0.4,0.53))
ggplot(df)+
geom_point(aes(x=tidytext::reorder_within(site,value,condition,fun=mean),y=value))+
facet_grid(~condition,space="free_x",scales = "free_x")+
scale_x_reordered()

img

解决方法

首先,将 dfdf.line 合并在一起。接下来,将主 aes() 调用移至 ggplot,以便稍后使用。然后使用 stat_summary:

library(dplyr)
merge(df,df.line) %>%
ggplot(aes(x=tidytext::reorder_within(site,value,condition,fun=mean),y=value))+
geom_point()+
stat_summary(aes(y = standard,ymax = after_stat(y),ymin = after_stat(y)),fun = mean,geom = "errorbar",color = "red",width = 0.3) +
facet_grid(~condition,space="free_x",scales = "free_x")+
scale_x_reordered()

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。