基于R语言画箱图

SCI常用的箱图绘制

最近水群,有同学看文献中,遇见了一些常用的箱图,并对箱图上添加T检验标签很感兴趣。

tOlUZF.png

简介

可以仔细看一下这图,很多学生信的作者喜欢用这种箱图加点图的方式来展示自己选择的差hub基因在肿瘤组织中和正常组织中表达量的差异。因此小编在这里尝试用一下ggplot去画一下此类图形,并标注t检验的p值。

代码示例

以iris数据集为例

#先查看一下iris数据的结构
head(iris)
#  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1          5.1         3.5          1.4         0.2  setosa
#2          4.9         3.0          1.4         0.2  setosa
#3          4.7         3.2          1.3         0.2  setosa
#4          4.6         3.1          1.5         0.2  setosa
#5          5.0         3.6          1.4         0.2  setosa
#6          5.4         3.9          1.7         0.4  setosa

#最后一列Species是因子,table一下看看
table(iris$Species)
#setosa versicolor  virginica 
    50         50         50 

#选其中俩个(setosa,versicolor)进行画图
test=iris[1:100,]
用ggplot画箱图

这里用的是ggplot2进行画箱图

#test是加载数据,用Species里面的分类做x轴,先尝试用Sepal.Length的数据做Y轴,画箱图用geom_boxplot()


ggplot(test, aes(x=Species, y=Sepal.Length)) +
  geom_boxplot()

一个简陋的箱图就出来了

tOlJMV.png

因为箱图的背景不好看,就尝试让箱图根据分类采用不同颜色,让图形更形象

  
#改变边框颜色 
ggplot(test, aes(x=Species, y=Sepal.Length)) +
  geom_boxplot(aes(color=Species))
tOl8x0.png

在箱体里填充颜色

ggplot(test, aes(x=Species, y=Sepal.Length)) +
  geom_boxplot(aes(fill=Species))
tOl32q.png

这样箱图就画完了,为了方便保存,给箱图赋值P

p=ggplot(test, aes(x=Species, y=Sepal.Length)) +
  geom_boxplot(aes(fill=Species))
在箱图基础上加上散点

利用Sepal.Length里的数值在箱图上打上散点

p + geom_jitter(position=position_jitter(0.3))
tOl1Gn.png

这时候已经完成接近百分之八十了,如果有同学想改变一下散点的type,直接根据shape改就行。

p + geom_jitter(aes(shape=Species), position=position_jitter(0.3))
tOlYrT.png

还剩最后一步,在这基础上添加t检验的P值。还是先将目前画的图保存一下赋值为p1.

p1=p + geom_jitter(aes(shape=Species), position=position_jitter(0.3))
画T检验的P值

要用到ggpubr并构建一个比较的list进行t检验。

library("ggpubr")

class <- list(c("setosa","versicolor"))

p1 + stat_compare_means(comparisons=class,method="t.test",label="p.signif")

这样图就画出来啦

tOltqU.png

图中的ns表示P值没统计学意义,一颗星表示0.01<P值≤0.05,俩颗星表示0.001<P值≤0.01,三颗星表示0.0001<P值≤0.001。

你可能感兴趣的:(基于R语言画箱图)