输入表达矩阵
在这里生成一个随机数据,横轴为基因名,纵轴为样本名,数据代表基因的表达量。
实际作图应根据表达矩阵。
rm(list=ls())
set.seed(10086) #这句代码表示生成的随机数组是一致的,不会改变
exp = matrix(rnorm(18),ncol = 6)
exp = round(exp,2)
rownames(exp) = paste0("gene",1:3)
colnames(exp) = paste0("test",1:6)
exp[,1:3] = exp[,1:3]+1
exp
转置
将样本名变为横轴,基因名作为纵轴,并在数据最后一列进行分组。
library(tidyr)
library(tibble)
library(dplyr)
dat = t(exp)
dat = as.data.frame(dat)
dat = rownames_to_column(.data = dat)
dat = mutate(.data = dat, group = rep(c("control","treat"),each = 3))
准备数据
利用pivot_longer函数,把数据变成长数据,便于画图。
pdat = pivot_longer(data = dat,
cols = starts_with("gene"),
names_to = "gene",
values_to = "count")
绘图
绘图和分面。
library(ggplot2)
p = ggplot(pdat,aes(gene,count))+
geom_boxplot(aes(fill = group))+
geom_jitter()+
theme_bw()
p
p + facet_wrap(~gene, scales = "free")