R语言ggboxplot-一文掌握箱线图绘制所有细节

载入数据

1Sys.setlocale('LC_ALL','C')
2load(file = "F:/Bioinfor_project/Breast/AS_research/AS/result/hubgene.Rdata")
3head(data)
4require(cowplot)
5require(tidyverse)
6require(ggplot2)
7require(ggsci)
8require(ggpubr)
9mydata<-data %>% 
10  ## 基因表达数据gather,gather的范围应调整
11  gather(key="gene",value="Expression",CCL14:TUBB3) %>% 
12  ##
13  dplyr::select(ID,gene,Expression,everything()) 
14head(mydata)  ## 每个基因作为一个变量的宽数据

创建带有pvalue的箱线图

  • 参考资料

  • 展示绘图细节控制

1p <- ggboxplot(mydata, x = "group", y = "Expression",
2          color = "group", palette = "jama",
3          add = "jitter")
4#  Add p-value
5p + stat_compare_means()

image.png

改变统计方法

1# Change method
2p + stat_compare_means(method = "t.test")

image.png

统计学意义标注

  • label="p.signif"

  • p.format等

  • label.x标注位置

1p + stat_compare_means( label = "p.signif")

image.png

多组比较

  • 给出global pvalue

1# Default method = "kruskal.test" for multiple groups
2ggboxplot(mydata, x = "gene", y = "Expression",
3          color = "gene",add="jitter", palette = "jama")+
4  stat_compare_means()
5
6# Change method to anova
7ggboxplot(mydata, x = "gene", y = "Expression",
8          color = "gene", add="jitter", palette = "jama")+
9  stat_compare_means(method = "anova")

image.png
image.png

指定比较

  • 配对比较:会完成各个变量的比较,默认wilcox.test法,可修改

  • my_comparisions:可以指定自己想要进行的比较

  • 指定参考组,进行比较

1require(ggpubr)
2compare_means(Expression ~ gene,  data = mydata)
3
4## 指定自己想要的比较
5# Visualize: Specify the comparisons you want
6my_comparisons <- list( c("CCL14", "HBA1"), c("HBA1", "CCL16"), c("CCL16", "TUBB3") )
7ggboxplot(mydata, x = "gene", y = "Expression",
8          color = "group",add = "jitter", palette = "jama")+ 
9  stat_compare_means(comparisons = my_comparisons)#+ # Add pairwise comparisons p-value
10  #stat_compare_means()     # Add global p-value

image.png

指定参考组

指定CCL14作为参考组与其它各组比较
ref.group

1compare_means(Expression ~ gene,  data = mydata, ref.group = "CCL14",
2              method = "t.test")
3# Visualize
4mydata %>% 
5  filter(group=="TNBC") %>% # 筛选TNBC数据
6ggboxplot( x = "gene", y = "Expression",
7          color = "gene",add = "jitter", palette = "nejm")+
8  stat_compare_means(method = "anova")+      # Add global p-value
9  stat_compare_means(label = "p.signif", method = "t.test",
10                     ref.group = "CCL14")      

image.png

多基因分面

按另外一个变量分组比较

1## 比较各个基因在TNBC与Normal表达
2compare_means( Expression ~ group, data = mydata, 
3              group.by = "gene")
4# Box plot facetted by "gene"
5p <- ggboxplot(mydata, x = "group", y = "Expression",
6          color = "group", palette = "jco",
7          add = "jitter",
8          facet.by = "gene", short.panel.labs = FALSE)
9# Use only p.format as label. Remove method name.
10p + stat_compare_means(label = "p.format")

image.png

将pvalue换成星号

  • hide.ns = TRUE.参数可隐藏ns

1p + stat_compare_means(label =  "p.signif", label.x = 1.5)

image.png

将各个图绘制在一张图中

1p <- ggboxplot(mydata, x = "gene", y = "Expression",
2          color = "group", palette = "nejm",
3          add = "jitter")
4p + stat_compare_means(aes(group = group))

image.png

修改下pvalue展示的方式

1# Show only p-value
2p + stat_compare_means(aes(group = group), label = "p.format")

image.png

用星号表示pvalue

1# Use significance symbol as label
2p + stat_compare_means(aes(group = group), label = "p.signif")

image.png

配对样本比较

要求x,y具有相同的样本数,进行一一配对比较

1head(ToothGrowth)
2compare_means(len ~ supp, data = ToothGrowth, 
3              group.by = "dose", paired = TRUE)
4# Box plot facetted by "dose"
5p <- ggpaired(ToothGrowth, x = "supp", y = "len",
6          color = "supp", palette = "jama", 
7          line.color = "gray", line.size = 0.4,
8          facet.by = "dose", short.panel.labs = FALSE)
9# Use only p.format as label. Remove method name.
10p + stat_compare_means(label = "p.format", paired = TRUE)

image.png

封装为函数命名为group_box

  • 功能:已经选定的基因绘制箱线图

  • - 参数1:group分组变量,可以是自己所有感兴趣的变量

  • 参数2:mydata为整理好的清洁数据,gene为长数据(gather版本)

1head(mydata)
2group_box<-function(group=group,data=mydata){
3        p <- ggboxplot(mydata, x = "gene", y = "Expression",
4          color = group, 
5          palette = "nejm",
6          add = "jitter")
7p + stat_compare_means(aes(group = group))
8}
9
10## 
11group_box(group="PAM50",data = mydata)

封装为函数命名为group_box

  • 功能:已经选定的基因绘制箱线图

  • - 参数1:group分组变量,可以是自己所有感兴趣的变量

  • 参数2:mydata为整理好的清洁数据,gene为长数据(gather版本)

1head(mydata)
2group_box<-function(group=group,data=mydata){
3        p <- ggboxplot(mydata, x = "gene", y = "Expression",
4          color = group, 
5          palette = "nejm",
6          add = "jitter")
7p + stat_compare_means(aes(group = group))
8}
9
10## 
11group_box(group="PAM50",data = mydata)

image.png

封装函数gene_box

  • 目的功能:对感兴趣的基因绘制和分组绘制boxplot

- 注意这时使用的应该是基因的宽数据,因为涉及到单个基因作为变量

1head(data)
2usedata<-data
3## 封装函数
4gene_box<-function(gene="CCL14",group="group",data=usedata){
5p <- ggboxplot(data, x = group, y = gene,
6          ylab = sprintf("Expression of %s",gene),
7          xlab = group,
8          color = group, 
9          palette = "nejm",
10          add = "jitter")
11p + stat_compare_means(aes(group = group))
12}
1gene_box(gene="CCL14")

image.png

牛刀小试

1gene_box(gene="CCL16",group="PAM50")

image.png

批量绘制

  • 目的功能:绘制任意基因,任意分组,批量绘制一气呵成了

  • 封装函数+lapply批量绘制无敌

  • 在lapply中的函数参数设置,不在原函数中,而是直接放置在lapply中

  • do.call中参数1为函数,+c()包含原函数的参数设置,同样参数设置不在原函数中

1require(gridExtra)
2head(data)
3
4## 需要批量绘制的基因名
5name<-colnames(data)[3:6]
6## 批量绘图
7p<-lapply(name,gene_box,group = "T_stage")
8## 组图
9do.call(grid.arrange,c(p,ncol=2))

image.png
(0)

相关推荐

  • 肿瘤外显子实战之探索一个肝癌样品的23个部位的差异

    刚才听了一个讲座,题目很吸引人,关于癌症研究和进化生物学的主题,主讲人是吳仲義教授,澳大濠江傑出訪問學者.芝加哥大學教授.2004年當選中央研究院院士及美國科學促進協會外籍會員.曾擔任芝加哥大學生態與 ...

  • 基因或蛋白富集分析,gsea与ssgsea

    大家应该对通路富集分析都很熟悉,如DAVID.超几何富集分析等.都是在大量文章中常见的通路富集方法,给大家介绍一个更加复杂的通路富集分析的前期数据处理包GSVA(gene set variation ...

  • 基因家族分析之获取全部cDNA碱基序列构建进化树

    早在2015我就在博客写过一个教程 hpv病毒基因研究调研 就是下载全部的HPV病毒的碱基序列后进行多序列比对,然后绘制系统发育树,没想到这就是所谓的基因家族分析,有趣! 正好,就安排公司学习者以此为 ...

  • 手把手10分文章WGCNA复现:小胶质细胞亚群在脑发育时髓鞘形成的作用

    Hi大家好,我是老米!生信入门一个月,感谢生信技能树平台.这是我的第3篇Markdown.不知道多少人还记得我的前两个投稿: 原来一个星期真的可以零基础入门TCGA数据挖掘,甚至markdown写作公 ...

  • 太太太太硬核了!5个数据库让你批量发5+SCI!难度不大,可复现性极强!

    解螺旋公众号·陪伴你科研的第2612天 肝癌纯生信 大家好,我是Jerry,今天我给大家分享一篇单基因在肝癌疾病方面的纯生信文章,该文章是发表于Aging-US杂志上,最新影响因子为5.682分.该篇 ...

  • ShinyApp | 有料的 TBtools-Barplot 插件 - 自拆机械表始

    导语 老铁邵扬,边带娃边鼓捣,快速搞出了一个精美插件!在我看来,我最关心的还是... 感觉这个插件可以拿来分析荧光定量数据?当然,这个似乎不太重要. 重要的是,后面搞大田数据,做品种性状比较时... ...

  • 课后笔记:ggplot2优雅的显示WB结果

    我们担心学员没那么快hold住R语言可视化高级技巧,所以介绍了两个小白神包: 新手绘图一站式R包ggstatsplot 新手绘图一站式R包之ggpubr 但是学生的表现实在是太超出我意料了,能超脱于现 ...

  • R之箱线图绘制

    16s分析一直在连载,但是最基础的莫过于alpha多样性了,但是箱线图却不是alpha多样性的唯一选择,箱线图也不是局限于alpha多样性,这里借助alpha多样性,将箱线图做一个完整绘制 #这里安装 ...

  • 跟着Nature Genetics 学画图:R语言ggplot2画箱线图(boxplot)展示D s...

    简介:R语言统计与绘图公众号目前致力于分享医学统计与R绘图知识,手把手教你使用R语言绘制基线特征表.KM生存曲线.森林图.ROC曲线等.每天一篇精彩R语言推文教程,手把手带你入门R语言绘图. 今天推文 ...

  • R ggplot和ggsignif箱线图添加显著性差异标识

    22019.03.07 11:33:11 具有显著性标注的箱线图 有时候我们会看到如上图片,觉得挺好,但是如何实现呢?没有做的的时候,觉得挺难,但是真要做才发现没有那么困难? 其实做这样的图,目前R比 ...

  • 服务业六西格玛管理项目工具-箱线图

    箱线图(也称为方框虚线图)可用来评估和比较样本分布.箱线图在六西格玛D阶段及A阶段用得比较多,在T检验和方差分析的图形输出中都有用到.Quartile ("Q") 代表数据的四分之 ...

  • R绘图笔记 | 多数据系列的箱型图与带抖动散点的多数据系列箱型图

    关于绘图,前面介绍了一些: R绘图笔记 | 一般的散点图绘制 R绘图笔记 | 柱状图绘制 R绘图笔记 | 直方图和核密度估计图的绘制 R绘图笔记 | 二维散点图与统计直方图组合 R绘图笔记 | 散点分 ...

  • 箱线图的生物学含义

    我们阅读量破万的综述:RNA-seq这十年(3万字长文综述) 给粉丝朋友们带来了很多理解上的挑战,所以我们开辟专栏慢慢介绍其中的一些概念性的问题,上一期: 表达矩阵的归一化和标准化,去除极端值,异常值 ...

  • 箱线图你真的懂了吗?

    欢迎来到医科研,这里是白介素2的读书笔记,跟我一起聊临床与科研的故事, 生物医学数据挖掘,R语言,TCGA.GEO, SEER数据挖掘. 箱线图的理解,以下先画出一个箱线图 library(tidyv ...

  • R语言可视化:ggplot2冲积/桑基图sankey分析大学录取情况、泰坦尼克幸存者数据

    原文链接:http://tecdat.cn/?p=23490 本文介绍了冲积/桑基图,以及 定义了命名方案和冲积/桑基图的基本组成部分(轴.冲积层.流). 描述了所识别的冲积/桑基图数据结构. 展示了 ...

  • 箱线图和小提琴图合在一起更好

    Boxplot 一般我们的箱线图就是这样 # Libraries library(tidyverse) library(hrbrthemes) library(viridis) # create a ...