【R语言】绘制误差线图+数据分布+显著性分析

写在前面
绘制一个生物学研究中最普遍的图,误差线图+数据分布+显著性分析。

数据准备

自行编写一个数据集,无实际意义。

options(stringsAsFactors = F)
rm(list=ls())
#创建数据集
vec <- c("N","P","Q")
dff <- data.frame()
for(i in 1:length(vec)){
  df <- data.frame(group=vec[i],runif(30))
  dff <- rbind(dff,df)
}
#编写函数计算平均值和标准差
data_summary <- function(data, varname, groupnames){
  require(plyr)
  summary_func <- function(x, col){
    c(mean = mean(x[[col]], na.rm = T),
      sd = sd(x[[col]], na.rm = T))
  }
  data_sum <- ddply(data, groupnames, .fun = summary_func, varname)
  data_sum <- rename(data_sum, c("mean" = varname))
  return(data_sum)
}
#测试函数的功能
df2 <- data_summary(dff, varname = "runif.30.", groupnames = c("group"))
df2$count <- c(30,30,30)
colnames(df2) <- c("group","mean","sd","count")

绘图

p<- ggplot()+ 
  geom_bar(data=df2,mapping=aes(x=group,y=mean), #柱状图
           fill = "white",
           size = 1.5,
           #color = c("#1E90FF","gold","red"),
           position="dodge", # 柱状图格式
           stat="identity", # 数据格式
           width = 0.6)+  # 柱状图尺寸
  geom_jitter(data=dff, #散点
              mapping=aes(x=group,y=runif.30.,fill = group,colour = group,shape = group),
              size = 2,
              height = 0.05,#散点纵向抖动
              
              width = 0.1)+scale_fill_aaas()+ #散点横向抖动
 # scale_color_manual(values = c("#1E90FF","gold","red"))+ #散点颜色
  geom_signif(data=dff,mapping=aes(x=group,y=runif.30.), # 不同组别的显著性
              comparisons = list(c("N", "P"), # 哪些组进行比较
                                 c("N", "Q"),
                                 c("P", "Q")),
              #annotation=c("**"), # 显著性差异做标记
              #map_signif_level=T, # T为显著性,F为直接显示p value
              #tip_length=c(0,0,0,0,0,0), # 修改显著性线两端的长短
              y_position = c(1,1.5,1), # 设置显著性线的位置高度,每个数值代表每个组
              #size=1, # 修改线的粗细
              #textsize = 7, # 修改*标记的大小
              test = "t.test")+ # 检验的类型
  geom_errorbar(data=df2,mapping=aes(x = group,ymin = mean-sd, ymax = mean+sd), # 误差线添加
                width = 0.3, #误差线的宽度
                color = c("black"), #颜色
                size=0.8)+ #粗细
  scale_y_continuous(limits =c(0, 2) ,expand = c(0,0))+ # y轴的范围
  theme_classic(  # 主题设置,这个是无线条主题
    base_line_size = 1 # 坐标轴的粗细
  )+
  labs(title="White blood cell(WBC)",x="",y="Retive_Abundance")+ # 添加标题,x轴,y轴内容
  theme(plot.title = element_text(size = 15,
                                  colour = "black",
                                  hjust = 0.5),
        axis.title.y = element_text(size = 15, 
                                    # family = "myFont", 
                                    color = "black",
                                    face = "bold", 
                                    vjust = 1.9, 
                                    hjust = 0.5, 
                                    angle = 90),
        legend.title = element_text(color="black", # 修改图例的标题
                                    size=15, 
                                    face="bold"),
        legend.text = element_text(color="black", # 设置图例标签文字
                                   size = 10, 
                                   face = "bold"),
        axis.text.x = element_text(size = 13,  # 修改X轴上字体大小,
                                   color = "black", # 颜色
                                   face = "bold", #  face取值:plain普通,bold加粗,italic斜体,bold.italic斜体加粗
                                   vjust = 0.5, # 位置
                                   hjust = 0.5, 
                                   angle = 0), #角度
        axis.text.y = element_text(size = 13,  
                                   color = "black",
                                   face = "bold", 
                                   vjust = 0.5, 
                                   hjust = 0.5, 
                                   angle = 0) 
  )
p

最后出图的效果:


image.png

我选的都是随机数据,没有差异也算是意料之内把。

参考链接:
1.https://mp.weixin.qq.com/s/19yZc8_HDoJ2w-e1h-k58Q
2.https://www.jianshu.com/p/634f6061a9cb
3.https://cloud.tencent.com/developer/article/1692505

后记
我还想做一种图,是把差异的结果用ABCD表示,但是我发现,好像ggplot做不了,找到了一个老哥写的帖子,后面好好学习一下。https://www.jianshu.com/p/e11164ee0577

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355

推荐阅读更多精彩内容