打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ggplot2画火山图

火山图(volcano plot)其实就是一个散点图。把以前的大概整理了一下,代码如下:

  1. setGeneric(

  2. name = 'volcanoPlot',

  3. def = function(p.value,

  4. fc,

  5. p.cutoff = 0.05,

  6. fc.cutoff = 1.3,

  7. xlab = 'Log2 (Fold change)',

  8. ylab = '-Log10 (P-value)') {

  9. p.value <- as.numeric(p.value)

  10. fc <- as.numeric(fc)


  11. marker <- rep('No', length(p.value))

  12. marker[p.value < p.cutoff &

  13. fc > fc.cutoff] <- 'Increase'

  14. marker[p.value < p.cutoff &

  15. fc < 1 / fc.cutoff] <- 'Decrease'


  16. data <-

  17. data.frame(p.value, fc, marker, stringsAsFactors = FALSE)


  18. require(ggplot2)

  19. plot <- ggplot(data, aes(log(fc, 2), -log(p.value, 10),

  20. colour = marker)) +

  21. geom_point() +

  22. scale_colour_manual(

  23. guide = guide_legend(title = NULL),

  24. values = c(

  25. 'No' = 'grey',

  26. 'Increase' = '#ED00007F',

  27. 'Decrease' = '#00468B7F'

  28. )

  29. ) +

  30. theme_bw() +

  31. geom_hline(yintercept = -log(p.cutoff, 10),

  32. linetype = 2) +

  33. geom_vline(xintercept = c(log(fc.cutoff, 2), -log(fc.cutoff, 2)), linetype = 2) +

  34. labs(x = xlab, y = ylab) +

  35. theme(

  36. axis.title = element_text(size = 15),

  37. axis.text = element_text(size = 12),

  38. legend.title = element_text(size = 15),

  39. legend.text = element_text(size = 12),

  40. legend.position = c(1, 1),

  41. legend.justification = c(1, 1),

  42. legend.background = element_rect(fill = NULL, colour = 'black')

  43. )

  44. plot


  45. }

  46. )

将这个函数放在R中source,然后只要提供算好的fold change和p value即可。

运行代码如下:

  1. volcanoPlot(p.value = p.value, fc = fc)

得出图如下:

可以看到颜色配色不太好看,可以尝试使用别人已经弄好的主题或者配色。主题推荐使用ggthemes包,里面有很多不同的主题。配色推荐使用ggsci包,里面给出了不同杂志的配色方案。比如我们使用jama的配色方案,就可以得到下面的图:

plot + ggsci::scale_color_jama()

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
scRNA分析| Seurat堆叠小提琴图不满足? 那就ggplot2 堆叠 各种元素
R绘图笔记 | 二维散点图与统计直方图组合
R语言ggplot2画饼图及添加百分比标签
请教一个关于ggplot2关于作双坐标轴图的问题
R函数不会写,"抄"总会吧!
画一个火山图
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服