一文学会利用ggstatsplot包实现数据可视化

大家好,我是阿琛。在绘图上,除了基础包,大家所熟悉的常用R包包括ggplot2包,ggpubr包等等。但是,使用这些包绘制图形后,往往需要另外进行统计分析;而在文章发表时,数据的可视化与数据的统计结果缺一不可。基于此,出现了一个集绘图与分析于一体的强大神器,即ggstatsplot包。
接下来,我们将讲解一下ggstatsplot包的使用方法。在统计绘图过程中,ggstatsplot包在绘图过程中可以同时显示数据分布信息与统计分析结果,一图胜千言,可以大大减少对统计分析结果的文字说明。
目前,ggstatsplot包在统计学分析方面支持最常见的统计测试类型包括:
1). t-test;
2). ANOVA;
3). 非参数检验;
4). 相关性分析;
5). 列联表分析;
6). 回归分析等等。
下面,我们一起来看下,如何使用ggstatsplot包绘制另外一种统计plus版本的图形结果。
1.R包和数据准备
1.1 R包的安装与读取
关于ggstatsplot包的安装,与ggpubr包的方法一致,同样存在2种不同的安装途径,包括从CRAN和Github上进行安装。
###安装方法一:CRANinstall.packages("ggstatsplot")###安装方法二:Github#https://github.com/IndrajeetPatil/ggstatsplotif(!require(devtools)) install.packages("devtools")devtools::install_github("IndrajeetPatil/ggstatsplot")任选一种,成功安装后,使用library()函数进行检验是否成功安装。###读取R包library(ggstatsplot)
1.2 数据准备
接着就是重要的数据准备环节。俗话说得好,正式分析前,先仔细地端详一下需要分析的数据。
###加载表达谱exp <-read.table("exp.txt",sep = "\t",row.names = 1,check.names = F,header = T)
首先读取数据,可以看到,其中共包含501个观测,24个变量值。
exp[1:5, 1:5]
查看前5行和前5列的信息,可以看到,在数据集中,行名为患者的id号,第一列为geneA的表达情况,第二列为患者的免疫评分ImmuneScore,其后几列则为不同的免疫细胞浸润情况。
对于分组情况,我们基于四分位数值,以小于百分之25的为低,大于百分之75的为高,之间的为中间,分成三组。
#设置分组信息exp$group <- ifelse(exp$BTK < quantile(exp$BTK, probs = c(0.25)), "low", ifelse(exp$BTK > quantile(exp$BTK, probs = c(0.75)),"high","median"))exp$group <- factor(exp$group, levels = c("low", "median", "high"))table(exp$group)
最终,结果显示,high和low分组分别125例,median组为251例。
2.常见图形的绘制
2.1 ggbetweenstats()函数
该函数主要用于组间均值比较,可以输出boxplot、violinplot或者二者结合,通过plot.type参数定义。常用统计检验有方差分析、t检验(含配对t检验)、非参数检验、robust检验。
首先看一下使用默认的参数进行绘图。
ggbetweenstats(data = exp,x = group,y = ImmuneScore)
结果显示:
接着,我们来对其中的参数进行修改调整。其中:
1). 在type中,p代表参数检验,np代表非参数,默认参数为参数检验;
2). mean.ci = TRUE表示展示平均数的95%可信区间;
3). pairwise.comparisons = TRUE表示为配对检验;
4). pairwise.display参数表示控制展示比较的结果,ns无意义,all所有,s有意义的;
ggbetweenstats( data = exp, x = group, y = ImmuneScore, type = "np", #非参数检验 mean.ci = TRUE, pairwise.comparisons = TRUE, #配对检验 pairwise.display = "s", p.adjust.method = "fdr", messages = FALSE)
结果显示:在图中,每个点展示了平均数,95%可信区间,以及不同组别之间的比较分析。
2.2 ggwithinstats()函数
关于ggwithinstats()函数,其功能与ggbetweenstats()函数的功能几乎相同。我们来看一下如何使用ggwithinstats()函数来进行绘图。
library(WRS2)ggstatsplot::ggwithinstats(data = WineTasting,x = Wine,y = Taste,type = "np",pairwise.comparisons = TRUE,outlier.tagging = TRUE,outlier.label = Taster)
结果显示:
2.3 gghistostats()函数
此外,我们可以通过gghistostats()函数,用于绘制直方图和点图,主要用于展示一个变量的分布情况,并通过一个样本测试检查它是否与指定值明显不同。
ggstatsplot::gghistostats( data = exp, x = ImmuneScore, fill.gradient = TRUE, test.value = 500, #用于比较的值 test.value.line = TRUE, #展示比较值所在位置 type = "bf", # bayes factor for one sample t-test bf.prior = 0.8, messages = FALSE)
结果显示:在图中,其中蓝色线代表中位值,黑色线表示用于显示比较的值。
2.4 ggcorrmat()函数
下面介绍的这个函数是ggcorrmat()函数,其主要的功能是绘制相关性热图,与我们昨天介绍的内容corrplot包的功能是比较相似的。
那么,我们还是来展示一下如何使用ggcorrmat()函数来绘制免疫浸润细胞的相关性热图。对于ggcorrmat()函数相关参数的设置,我们先使用默认的参数来绘制一下,其中colors用来定义相关性变化趋势的颜色。
ggstatsplot::ggcorrmat( data = exp, cor.vars = 3:24, #选择进行分析的变量 colors = c("#E69F00", "white","#d5695d") #配色)
结果显示:其中颜色深浅与相关系数的大小呈正相关;
随后,我们来对一些相关的参数进行修改,其中通过sig.level来设定显著性分析P值的阈值,并且由于上下半边是完全一样的,因此可以使用matrix.type = "upper"表示只展示左上方的结果。
ggstatsplot::ggcorrmat( data = exp, sig.level = 0.01, #显著性的阈值 cor.vars = 3:24, #选择进行分析的变量 colors = c("#E69F00", "white","#d5695d"), #配色 matrix.type = "upper", title = "Correlation for immune cells")
结果显示:
2.5 ggscattterstats()函数
对于相关关系分析,ggstatsplot包中同样有相应的函数可以进行绘制。在method中可以设置不同的统计方法,同时我们可以对参数marginal.type进行选择,表示边缘分布的显示方式,比如直方图/密度曲线图/箱线图/小提琴图等等。
ggstatsplot::ggscatterstats( data = exp, x = geneA, y = ImmuneScore, xlab = "geneA expression", ylab = "ImmuneScore", method="lm", #统计方法,如lm、glm、loess或者自定义函数 marginal.type = "histogram", #边缘分布显示方式,直方图/密度曲线图/箱线图/小提琴图 messages = FALSE)
结果显示:
2.6 ggbarstats()函数
与ggplot2包的position参数相对应,ggbarstats()函数提供了相应的作用。同样的,我们使用ggplot2包中使用的内置数据集diamonds来进行作图。
ggstatsplot::ggbarstats(data = ggplot2::diamonds,x = cut,y = clarity)
结果显示:
我是分割线
好啦,关于ggstatsplot包的使用方法就介绍到这里了,是不是觉得十分好用呢?当然,在文章中使用该包绘图是,我们也可以查看该R包相应的介绍内容(Patil, I. (2018). ggstatsplot: "ggplot2" Based Plots with Statistical Details. CRAN.)。
回复“阿琛34”即可获得本次讲解的代码和示例数据~~
R数据清洗系列传送门
R语言小白入门课|一刻钟带你学会R数据转化
END

撰文丨阿  琛
排版丨四金兄
值班 | 弘  毅

主编丨小雪球
欢迎大家关注解螺旋生信频道-挑圈联靠公号~

继续阅读
阅读原文