输入表达矩阵

在这里生成一个随机数据,横轴为基因名,纵轴为样本名,数据代表基因的表达量。
实际作图应根据表达矩阵。

  1. rm(list=ls())
  2. set.seed(10086) #这句代码表示生成的随机数组是一致的,不会改变
  3. exp = matrix(rnorm(18),ncol = 6)
  4. exp = round(exp,2)
  5. rownames(exp) = paste0("gene",1:3)
  6. colnames(exp) = paste0("test",1:6)
  7. exp[,1:3] = exp[,1:3]+1
  8. exp

image.png

转置

样本名变为横轴,基因名作为纵轴,并在数据最后一列进行分组

  1. library(tidyr)
  2. library(tibble)
  3. library(dplyr)
  4. dat = t(exp)
  5. dat = as.data.frame(dat)
  6. dat = rownames_to_column(.data = dat)
  7. dat = mutate(.data = dat, group = rep(c("control","treat"),each = 3))

image.png

准备数据

利用pivot_longer函数,把数据变成长数据,便于画图。
image.png

  1. pdat = pivot_longer(data = dat,
  2. cols = starts_with("gene"),
  3. names_to = "gene",
  4. values_to = "count")

image.png

绘图

绘图和分面。

  1. library(ggplot2)
  2. p = ggplot(pdat,aes(gene,count))+
  3. geom_boxplot(aes(fill = group))+
  4. geom_jitter()+
  5. theme_bw()
  6. p
  7. p + facet_wrap(~gene, scales = "free")

image.png