多组差异箱线图(Multiple Group Comparison Boxplot)是一种统计图形,用于展示并比较两个或更多不同组别或分类变量在数值分布上的差异。这种图形特别适合于展示中位数、四分位数和异常值,同时可以通过颜色、分组或不同的填充样式区分不同的组别。箱线图对于检测和比较不同数据集的分散情况和中心位置非常有用。
箱线图的组成部分
- 中位线(Median Line):箱子中间的线,表示数据的中位数。
- 箱体(Box):箱体的上边界和下边界分别是数据的上四分位数(Q3)和下四分位数(Q1)。箱体的高度(IQR,四分位距)是这两个四分位数的差值,用来衡量数据的集中趋势。
- 须(Whiskers):从箱体延伸出的线段,通常延伸到Q1 - 1.5IQR和Q3 + 1.5IQR的位置。它们表示数据中的正常变异范围。
- 异常值(Outliers):通常用小点表示,这些是落在须之外的数据点。
多组差异箱线图的用途
多组差异箱线图可以用于比较如下方面:
- 不同条件或时间点下的数据分布:比如,可以用来比较不同时间点或不同实验条件下的生物样本数据。
- 组间差异的直观展示:可以清楚地看到不同组在中位数、四分位数和异常值方面的差异。
- 发现潜在的异常值和数据分布特征:帮助研究人员识别数据中可能的异常点或分布的偏态。
统计检验
在多组差异箱线图中,常常配合统计检验来评估组间差异的显著性,如ANOVA、t-test、Wilcoxon秩和检验等。这些检验结果可以通过在箱线图上添加注释(例如星号或P值)来直观表示。
示例
# 加载必要的库
library(reshape2)
library(ggpubr)
# 设置文件路径和工作目录
inputFile <- "input.txt"
outFile <- "boxplot.pdf"
# 读取数据
rt <- read.table(inputFile, sep="\t", header=TRUE, check.names=FALSE, row.names=1)
colnames(rt)[1] <- "Type"
# 数据转换为ggplot2的长格式
data <- melt(rt, id.vars="Type")
colnames(data) <- c("Type", "Gene", "Expression")
# 绘制带有统计检验的箱线图
p <- ggboxplot(data, x="Gene", y="Expression", color="Type",
ylab="Gene expression", xlab="", legend.title="Type",
palette=c("blue", "red"), width=0.6) +
rotate_x_text(60) +
stat_compare_means(aes(group=Type), method="wilcox.test",
symnum.args=list(cutpoints=c(0, 0.001, 0.01, 0.05, 1), symbols=c("***", "**", "*", " ")))
# 输出图片
ggsave(outFile, plot=p, width=6, height=5)
reshape2
:用于数据的重塑,尤其是将数据从宽格式转换为长格式,适用于ggplot2
进行作图。ggpubr
:是基于ggplot2
的扩展,提供了更为简便的方式来生成统计图形,并且支持添加统计检验结果。inputFile
和outFile
分别设置了输入和输出文件的路径。read.table()
从指定的输入文件中读取数据。这里假设数据是用制表符分隔的,并且第一行包含列标题,第一列被设置为行名(通常代表样本或实验条件)。数据的第一列被重新命名为"Type",这通常表示数据中的分类变量,例如实验的不同处理组。
melt()
函数将数据从宽格式转换为长格式,这是为了使数据格式适应ggplot2
的作图要求。id.vars="Type"
指定了"Type"列作为保持不变的标识变量,其他变量则被视为测量变量。修改后的数据框
data
的列名被设为"Type"、"Gene"和"Expression",以明确表示每列数据的含义,其中"Gene"可能代表不同的基因,"Expression"表示基因表达量。ggboxplot()
函数用于生成箱线图,其中x="Gene"
和y="Expression"
指定了x轴和y轴的数据,color="Type"
根据类型给不同的箱体上色。rotate_x_text(60)
将x轴的文本标签旋转60度,使之更容易阅读。stat_compare_means()
添加统计检验结果到图形上,这里使用的是Wilcoxon检验,符号表示的是不同显著性水平。ggsave()
函数用于保存生成的图形到指定的文件,这里是PDF格式。通过指定width
和height
参数,可以控制输出文件的尺寸。