美文网首页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