花花寫于2020-2-28,這是我在R語言課堂上用的練習題,你可以看答案之前先自己做一下:
生成一個隨機數(shù)(rnorm)組成的10行6列的矩陣匙瘪,列名為sample1,sample2….sample6蝶缀,行名為gene1辆苔,gene2…gene10,分組為sample1扼劈、2驻啤、3屬于A組,sample4荐吵、5骑冗、6屬于B組赊瞬。用循環(huán)對每個基因畫ggplot2箱線圖,并嘗試拼圖贼涩。
方法一 循環(huán)+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+分面巧涧,需要優(yōu)秀的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)