美文网首页ggplot2绘图
两种方法批量绘制差异基因箱线图

两种方法批量绘制差异基因箱线图

作者: 小洁忘了怎么分身 | 来源:发表于2020-02-28 18:05 被阅读0次

    花花写于2020-2-28,这是我在R语言课堂上用的练习题,你可以看答案之前先自己做一下:

    生成一个随机数(rnorm)组成的10行6列的矩阵,列名为sample1,sample2….sample6,行名为gene1,gene2…gene10,分组为sample1、2、3属于A组,sample4、5、6属于B组。用循环对每个基因画ggplot2箱线图,并尝试拼图。

    方法一 循环+patchwork

    这个是

    exp = matrix(rnorm(60),nrow = 10)
    colnames(exp) <- paste0("sample",1:6)
    rownames(exp) <- paste0("gene",1:10)
    exp[1:4,1:4]
    #dat = cbind(t(exp),group = rep(c("A","B"),each = 3))
    dat = data.frame(t(exp))
    dat = mutate(dat,group = rep(c("A","B"),each = 3))
    p = list()
    library(ggplot2)
    for(i in 1:(ncol(dat)-1)){
      p[[i]] = ggplot(data = dat,aes_string(x = "group",y=colnames(dat)[i]))+
        geom_boxplot(aes(color = group))+
        geom_jitter(aes(color = group))+
        theme_bw()
    }
    library(patchwork)
    wrap_plots(p,nrow = 2,guides = "collect")
    

    方法二

    人见人爱tidyverse全家桶
    gather+分面,需要优秀的ggplot2技巧

    library(tidyr)
    library(dplyr)
    library(ggplot2)
    exp = matrix(rnorm(60),nrow = 10)
    colnames(exp) <- paste0("sample",1:6)
    rownames(exp) <- paste0("gene",1:10)
    exp[1:4,1:4]
    dat = data.frame(t(exp))
    dat = mutate(dat,group = rep(c("A","B"),each = 3))%>% mutate(pair = rep(c("AA","BB","cc"),each = 2))
    
    dat2 = gather(dat,key = "gene",value = "expression",-group,-pair)
    ggplot(data = dat2)+
      geom_boxplot(aes(x = group,y = expression,color = group))+
      theme_bw()+
      facet_wrap(~gene,nrow = 2)
    

    相关文章

      网友评论

        本文标题:两种方法批量绘制差异基因箱线图

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