美文网首页
基于R语言画箱图

基于R语言画箱图

作者: TrigoHoang | 来源:发表于2020-06-12 17:28 被阅读0次

    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语言画箱图

          本文链接:https://www.haomeiwen.com/subject/lydntktx.html