小提琴图(Violin plot)可以用来展示多组数据的分布状态以及概率密度,这种图表结合了箱线图和密度图的特征,常用于生信分析中。
例如:2021年发表在Briefings in Bioinformatics上的一篇影响因子为11.62的文献为例,该文献中大量运用了小提琴图来展示多组数据的分布状态、概率密度以及它们之间的差异。
从小提琴图中我们不仅可以直观地了解数据的中位数、四分位数、异常值等信息,还可以进行差异分析,通过显著性P值来判断两组数据的差异程度。例如第一张图B中,作者将样本分为五组,绘制小提琴图展示了免疫相关预后评分(IRPS)在不同分组的分布状态,并通过显著性P值直观地说明了两两分组之间IRPS的差异。
为了使大家更简便快捷地绘制出精美的小提琴图,这里我们给大家提供一个绘制小提琴图的R脚本,这个脚本只需要准备好相应的输入文件,再进行简单的命令行操作即可绘制出两组或多组数据的小提琴图,并可在两两之间进行差异分析。
使用命令示例如下
#当分组数目为两组时,合适的标签高度需根据数据值的大小调试
Rscript compare_violin_boxplot.r -m metadata_gene.tsv \
-n PDCD1 -g IRPS_group -s 2 -t wilcox.test -l 8 -o boxplot -p test
#当分组数目大于两组时,合适的标签高度需根据数据值的大小调试
Rscript /share/work/fangs/scripts/tcga/compare_violin_boxplot.r -m metadata_group.tsv \
-n IRPS -g Subtype -s 5 -t kruskal.test \
-f 31 -b 2 -l 50 -o boxplot -p IRPS
输入文件准备
这个脚本所必需的输入文件只有一个,通过-m参数指定(metadata_group.tsv),文件中每一行为一个样本,列必须包含基因表达量等数值型数据以及样本的分组信息,如下列表格所示:
barcode | PDCD1 | Subtype |
TCGA-A8-A07B-01A-11R-A00Z-07 | 1.50899055035449 | LumA |
TCGA-A8-A08B-01A-11R-A00Z-07 | 2.078678925608 | Her2 |
TCGA-A8-A08P-01A-11R-A00Z-07 | 2.91142321338723 | LumB |
更多脚本参数设置及说明
初次使用脚本时,可以通过-h参数获得以下帮助信息。
Rscript compare_violin_boxplot.r -h
usage: compare_violin_boxplot.r
[-h] -m meta [-n name] [-g group_name] [-s group_num] [--log2]
[-t method] [-f from] [-b by] [-l lab_height] [-H HEIGHT] [-W WIDTH]
[-o OUTDIR] [-p PREFIX]
Difference comparison plot(violin_box)
optional arguments:
-h, --help show this help message and exit
-m meta, --meta meta Input the clinical information file path that contains
the grouping[required]
-n name, --name name The column name of the value[optional,default:IRPS]
-g group_name, --group_name group_name
Specifies the column name that contains grouping
information[optional,default:TCGA_Subtype]
-s group_num, --group_num group_num
Number of groups[optional,default:5]
--log2 Whether to perform log2
processing[optional,default:False]
-t method, --method method
A method used to compare differences[optional:t.test/w
ilcox.test/anova/kruskal.test,default:kruskal.test]
-f from, --from from Base height of the label[optional,default:17]
-b by, --by by The difference between two tag
heights[optional,default:2]
-l lab_height, --lab_height lab_height
Label height[optional,default:35]
-H HEIGHT, --height HEIGHT
the height of dumbbell plot[optional,default 8]
-W WIDTH, --width WIDTH
the width of dumbbell plot[optional,default 8]
-o OUTDIR, --outdir OUTDIR
output file directory[optional,default cwd]
-p PREFIX, --prefix PREFIX
out file name prefix[optional,default kegg]
根据自身需要调整必要的参数:
-n 输入列名,指定用于绘制小提琴图的一列数据;
-g 输入列名,指定根据哪一列分组信息对样本进行分组;
-s 指定分组的数目,最小为2,最大为5;
-t 指定差异分析的方法,如t.test(t检验)、wilcox.test(秩和检验)等;
-l 指定显著性P值标签的高度,需根据数据的值的大小进行调整。
其中需要注意的是,当绘制仅分为两组的小提琴图时,指定以上参数即可,但如果绘制两组以上的小提琴图时,必须还要指定-f和-b参数。这两个参数调整的是两两分组之间显著性P值标签的位置,-f参数指定的是两两分组之间显著性P值标签的最低高度,-b参数指定的是每个标签的间隔大小。
其他参数说明
--log2 加上该参数即要对连续变量进行log2转化;
-H 指定输出图片的高度,默认高为8英寸;
-W 指定输出图片的宽度,默认宽为8英寸;
-o 指定结果输出的路径,默认为当前路径;
-p 指定输出文件名字的前缀。
脚本获取方法
在“生信博士“公众号回复kmplot即可获得网盘链接以及提取码。
如何使用命令行的方法分析数据
可能有的人没有用过命令的形式分析数据, 可以学习下面的课程入门一下:
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!