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

在 R 中的 ggpubr 包中设置误差线值

如何解决在 R 中的 ggpubr 包中设置误差线值

我有误差线的值,我想在 "ggpubr" 中指定这些值。 似乎“add”和“error.plot”函数有很多可能性(例如,“mean_sd”),但我找不到任何可以让我自己指定值的东西。 我也试过“geom_errorbar”,但它不能正常工作。 我知道,下次我会使用 ggplot2 来提高灵活性。

示例代码 -

df <- data.frame(stringsAsFactors = FALSE,"pse" = c(40,42,41,40,60,61,62,39,38,59,58,59 ))

df[1:4,2]="30 cm"
df[5:8,2]="60 cm"
df[9:12,2]="30 cm"
df[13:16,2]="60 cm"
df[1:8,3] = "3.5 cm"
df[9:16,3] = "6.5 cm"
colnames(df)[2]="Size"
colnames(df)[3]="distance"

my_comparisons <- list( c("Near","Far"))
ggbarplot(df,x = "Size",y = "pse",fill ="distance",color = "distance",ylim=c(25,75),width = 0.6,add = c("mean_se","jitter"),palette = c("#000000","#111111"),position = position_dodge(0.65))+
theme(legend.position = "top")+ theme_bw() + theme(axis.text=element_text(size=14),axis.title=element_text(size=14))+ scale_fill_grey(start=0.8,end=0.95)+ theme(legend.position = "top")+ ylab ("PSE (mm)")[![enter image description here][1]][1]

1

enter image description here

https://i.stack.imgur.com/AlrKa.jpg

解决方法

library(ggpubr)

df <- data.frame(stringsAsFactors = FALSE,"pse" = c(40,42,41,40,60,61,62,39,38,59,58,59 ))

df[1:4,2]="30 cm"
df[5:8,2]="60 cm"
df[9:12,2]="30 cm"
df[13:16,2]="60 cm"
df[1:8,3] = "3.5 cm"
df[9:16,3] = "6.5 cm"
colnames(df)[2]="Size"
colnames(df)[3]="Distance"

mean_30_3.5 <- mean(df$pse[df$Size == "30 cm" & df$Distance == "3.5 cm"])
mean_30_6.5 <- mean(df$pse[df$Size == "30 cm" & df$Distance == "6.5 cm"])

mean_60_3.5 <- mean(df$pse[df$Size == "60 cm" & df$Distance == "3.5 cm"])
mean_60_6.5 <- mean(df$pse[df$Size == "60 cm" & df$Distance == "6.5 cm"])


my_comparisons <- list( c("Near","Far"))
ggbarplot(df,x = "Size",y = "pse",fill ="Distance",color = "Distance",ylim=c(25,75),label = F,width = 0.6,add = c("mean_se","jitter"),palette = c("#000000","#111111"),position = position_dodge(0.65))+
  theme(legend.position = "top")+ theme_bw() + theme(axis.text=element_text(size=14),axis.title=element_text(size=14))+ 
scale_fill_grey(start=0.8,end=0.95)+ 
  theme(legend.position = "top")+ ylab ("PSE (mm)") +
  annotate("text",x = 0.85,y = mean_30_3.5 + 3,label = "your_value1")+
  annotate("text",x = 1.15,y = mean_30_6.5 + 3,label = "your_value2")+
  annotate("text",x = 1.85,y = mean_60_3.5 + 3,label = "your_value3")+
  annotate("text",x = 2.15,y = mean_60_6.5 + 3,label = "your_value4")

你的意思是这样的吗?:
enter image description here

,

谢谢! 我也找到了一个不同的解决方案。在这里分享。

 data_summary <- function(data,varname,groupnames){
  require(plyr)
  summary_func <- function(x,col){
    c(mean = mean(x[[col]],na.rm=TRUE),sd = sd(x[[col]],na.rm=TRUE))
  }
  data_sum<-ddply(data,groupnames,.fun=summary_func,varname)
  data_sum <- rename(data_sum,c("mean" = varname))
  return(data_sum)
}

下一个

    df2 <- data_summary(x,varname="PSE",groupnames=c("Size","Distance"))

df2$Size=as.factor(df2$Size)

my_comparisons <- list( c("Near","Far"))
ggbarplot(x,y = "PSE",add = c( "mean",position = position_dodge(0.65))+ theme_bw() 
+theme(axis.text=element_text(size=14),end=0.95)+ theme(legend.position = "top")+ ylab ("PSE 
(mm)")+geom_errorbar(data=df2,mapping=aes(x=Size,y=PSE,color=Distance,ymin=PSE- 
0.32,ymax=PSE+0.32),width=.15,position=position_dodge(.6))

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