[关闭]
@agpwhy 2022-05-15T08:51:56.000000Z 字数 1984 阅读 193

王胖的生信笔记第四十三期:把渐变火山图存成ppt

这里讲一个怎么把你的图存成ppt的方法, 顺带加一个花活儿,做个渐变火山图。

灵感来源

看到Y叔“我不会用illustrator,只会用ppt!”一文里,提到Y叔不怎么用Illustrator做图。确实在大部分情况下,各种需要Adobe Illustrator解决的问题都可以用office解决大半,关键在于怎么转换成office的格式。

这里就需要export包了。

准备数据

前面这部分前面有写过笔记,就不再多赘述。

  1. library(stringr)
  2. library(AnnoProbe)
  3. library(tinyarray)
  4. library(tidyverse)
  5. library(ggplot2)
  6. library(export)
  7. library(ggthemes)
  8. rm(list = ls())
  9. options(stringsAsFactors = F)
  10. gse = "GSE4107"
  11. geo = geo_download(gse)
  12. geo$exp = log(geo$exp+1)
  13. change_list = ifelse(str_detect(geo$pd$title,"control"),"control","treat")
  14. change_list = factor(change_list,levels = c("control","treat"))
  15. find_anno(geo$gpl)
  16. ids <- AnnoProbe::idmap('GPL570')
  17. dcp = get_deg_all(geo$exp,
  18. change_list,
  19. ids,
  20. logFC_cutoff = 1,
  21. scale_before = T,
  22. cluster_cols = F)

这里为了做火山图,就不对基因做筛选了,直接使用所有包含的基因。

deg <- dcp[[1]]

给上下调最明显的基因设为label

  1. deg$Group = "not-significant"
  2. deg$Group[which( (deg$adj.P.Val < 0.05) & (deg$logFC > .5) )] = "up-regulated"
  3. deg$Group[which( (deg$adj.P.Val < 0.05) & (deg$logFC < -.5) )] = "down-regulated"
  4. summary(as.factor(deg$Group))
  5. deg$Label = ""
  6. deg<- deg[order(deg$adj.P.Val), ]
  7. up.genes <- head(deg$symbol[which(deg$Group == "up-regulated")], 10)
  8. down.genes <- head(deg$symbol[which(deg$Group == "down-regulated")], 10)
  9. deg.top10.genes <- c(as.character(up.genes), as.character(down.genes))
  10. deg$Label[match(deg.top10.genes, deg$symbol)] <- deg.top10.genes

做一个渐变火山图

这部分代码来源于《生信师兄》,做了部分的修改。

  1. p <- ggplot(deg,aes(logFC, -log10(adj.P.Val)))+
  2. geom_hline(yintercept = -log10(0.05), linetype = "dashed", color = "#999999")+ #这里是为了说明p=0.05的界限在哪儿
  3. geom_point(aes(size=-log10(adj.P.Val), color= -log10(adj.P.Val)))+
  4. scale_color_viridis_c(option = "plasma")+
  5. scale_size_continuous(range = c(.1,4))+
  6. theme_bw()+
  7. theme(panel.grid = element_blank(),
  8. legend.position = c(0.9,0.3),
  9. legend.justification = c(0,1)
  10. )+
  11. guides(col = guide_colourbar(title = "-Log10_q-value"),
  12. size = "none")+
  13. geom_text(aes(label=Label, color = -log10(adj.P.Val)), size = 3, vjust = 1.5, hjust=1)+
  14. xlab(expression(log[2]~FC))+
  15. ylab(expression(-log[10]~(p~value~adjusted)))

最后做的效果如下:

volcano

保存成ppt

这个真的很简单,用export这个包只要这样:

graph2ppt(p, file="volcano.pptx")

其他各种office格式都可以,表格也可以输出成各种方便的形式。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注