- 摘要
- 箱线图主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比 较。箱线图的绘制方法是:先找出一组数据的上边缘、下边缘、中位数和两个四分位数;然后, 连接两个四分位数画出箱体;再将上边缘和下边缘与箱体相连接,中位数在箱体中间。然而,我们在绘制过程中,会出现不显示的情况(如下图),本篇文章则是解决箱线图无法显示的问题。
- 图一
- 环境与方法
- R version 3.6.1 (2019-07-05)
- 产生原因
- 箱线图绘制原始代码
代码library(ballgown) library(RSkittleBrewer) library(genefilter) library(dplyr) library(devtools) FPKM_table = commandArgs(TRUE) fpkm = read.table(FPKM_table,header=T,sep="\t",check.names=F) fpkm=fpkm[,2:(dim(fpkm)[2])] fpkm=pmax(fpkm,0) fpkm<-fpkm[which(rowSums(fpkm) > 0),] #方法二 fpkm = log10(fpkm) #方法一 #fpkm = log2(fpkm) pdf("box.pdf") boxplot(fpkm,las=2,ylab='log10(FPKM)', col=rainbow((dim(fpkm)[2]-1)),cex.axis=0.5) dev.off()
- 由图一可以发现,每组数据的中位数都小于零,这说明log10的对数值x范围,0<x<1。这是不能显示图片最核心的原因。
- 箱线图绘制原始代码
- 解决办法及结果展示
- 解决办法是使log10里面的值大于1,那么基于初始代码,对于数据有下面两种方法
- 方法一:
- fpkm = log10(fpkm+1)
- 这种方法是在求和基础上+1,使得每一行的和大于1。
- 结果展示
- 这种处理方式的问题就是异常值较多,箱线图虽然有填充颜色,但箱型图发生了形变,看起来没有显示出小于零那一部分的结果。
- 方法二:
- fpkm<-fpkm[which(rowSums(fpkm) > 1),]
- 这种方法是直接将过滤值从0上升到1,将求和0<x<1的值也排除掉
- 结果展示
- 这个感觉就正常多了。
- 总结
- 方法一对所有的求和值进行+1处理会使得整体偏高,但是在对数处理情况下,0<x<1这部分的值影响明显大于1<x的值,因此箱线图发生了形变,看起来中位数并不在箱型图中间。
2021.04.27【R语言】丨箱线图无法显示解决办法
最新推荐文章于 2023-10-13 19:34:24 发布