参考前文:R绘图笔记 | R语言绘图系统与常见绘图函数及参数

关于绘图,前面介绍了一些:

R绘图笔记 | 一般的散点图绘制

R绘图笔记 | 柱状图绘制

R绘图笔记 | 直方图和核密度估计图的绘制

R绘图笔记 | 二维散点图与统计直方图组合

R绘图笔记 | 散点分布图与柱形分布图

R绘图笔记 | 箱形图的绘制

R绘图笔记 | 小提琴图与漂亮的云雨图绘制

R绘图笔记 | 多数据系列的箱型图与带抖动散点的多数据系列箱型图

R绘图笔记 | 热图绘制

R绘图笔记 | 生存曲线的绘制

这里介绍火山图的绘制,火山图常常出现在芯片、转录组、蛋白组、代谢组等组学检测技术的结果中,并且通常伴随热图一起出现,文章中也很常见。

一.数据处理

如果你想获取该数据用于自己练习,下面是获取数据的地址:

https://docs.qq.com/sheet/DV3ZwZWl5UURjUGJi

数据格式是这样的。

二.绘图

1.读入数据

data <- read.csv("BioInfoNotesData4.csv",stringsAsFactors = F)
head(data)

我们画火山图,只需要其中的log2FC和FDR就可以了。在绘图之前,我们需要对FDR进行转换,将它的值变成-log10,如果有0,会产生Inf,需要去除。这样的话可以拉开差异表达基因之间的间距。在纵坐标上才可以很好的显示出来。上面的数据已经处理了。后面只需要取相应的列就行。

data <- data[,c(1,3,7)]
data$logP <- -log10(data$FDR)
colnames(data) <- c("Gene","Log2FC","FDR","logP")
head(data)

2.绘图

这里先介绍ggscatter函数绘图。

ggscatter(data, x, y, combine = FALSE, merge = FALSE,color = "black", fill = "lightgray", palette = NULL, shape = 19,size = 2, point = TRUE, rug = FALSE, title = NULL, xlab = NULL,ylab = NULL, facet.by = NULL, panel.labs = NULL,short.panel.labs = TRUE, add = c("none", "reg.line", "loess"),add.params = list(), conf.int = FALSE, conf.int.level = 0.95,fullrange = FALSE, ellipse = FALSE, ellipse.level = 0.95,ellipse.type = "norm", ellipse.alpha = 0.1,ellipse.border.remove = FALSE, mean.point = FALSE,mean.point.size = ifelse(is.numeric(size), 2 * size, size),star.plot = FALSE, star.plot.lty = 1, star.plot.lwd = NULL,label = NULL, font.label = c(12, "plain"), font.family = "",label.select = NULL, repel = FALSE, label.rectangle = FALSE,cor.coef = FALSE, cor.coeff.args = list(), cor.method = "pearson",cor.coef.coord = c(NULL, NULL), cor.coef.size = 4, ggp = NULL,show.legend.text = NA, ggtheme = theme_pubr(), ...)

data:就是绘图的数据,x、y分别指定轴变量。palette是调色板,其实很多参数和之前的图形绘制是相通的。我不介绍,你自己查看一下帮助文档,后面用到的参数我会介绍。

ggscatter(data,x="Log2FC",y="logP") + theme_test()

但是这样太丑了,我们还是对数据分组,然后处理一下。一是高低表达的差异显示出来,二是突出极显著或者差异倍数大的基因。

data$GeneLab <- ""
sigDownGene <- data$Gene[(data$Log2FC < -5 & data$FDR < 0.005)]
sigUpGene <- data$Gene[(data$Log2FC > 4&data$FDR < 0.001)]
sigGene <- c(sigDownGene,sigUpGene)
data$GeneLab[match(sigGene,data$Gene)] <- sigGene
head(data)

在图中要显示点的名称,我们可以通过label设置,但点那么多,我只显示自己想要的,可以增加一列,不显示的全都是空值,要显示的有值(这里是基因名称),repel参数避免要显示的基因名称重叠,不好看。

ggscatter(data,x="Log2FC",y="logP",color="Group",shape = 16,label = data$GeneLab,font.label=7,xlab = "log2(Fold Change)",ylab = "-log(pValue)",#rug= T,repel=T,size = 1) + theme_test()

我还是觉得丑,可通过theme设置主题。

ggscatter(data,x="Log2FC",y="logP",color="Group",shape = 16,palette = c("#7B68EE", "#E0E0E0", "#FF4500"),label = data$GeneLab,font.label=7,xlab = "log2(Fold Change)",ylab = "log(pValue)",#rug= T,repel=T,size = 1)+ theme(legend.title = element_blank(),legend.text = element_text(size = 8, face = "bold"),legend.margin = margin(t = 0, r = 0, b = 0, l = 0, unit = "pt"),legend.direction = "horizontal",legend.position = c(0.5,0.93),panel.background = element_rect(fill = "transparent",colour = "black"),plot.background = element_rect(fill = "transparent",colour = "black"))

除了上面的函数以外,有一些包里面自带的火山图绘制函数,有的图也很不错。比如TCGAbiolinks包,这个包是用来分析TCGA数据库的数据的,很好用,该包的TCGAVisualize_volcano函数绘制的火山图也很好看。

library(TCGAbiolinks)##
volFig <- pdf("vol.pdf",width=10,height=6)
TCGAVisualize_volcano(data$Log2FC, data$FDR,title = "",filename = volFig, xlab = "logFC",names = data$Gene, show.names = "highlighted",x.cut = 1, y.cut = 0.01, highlight = data$Gene[which(abs(data$Log2FC) >=4.5)],highlight.color = "orange")
dev.off()

这些绘图函数都是基于ggplot2包的,所以可以自定义很多元素。

volFig <- pdf("vol.pdf",width=10,height=8)
TCGAVisualize_volcano(data$Log2FC, data$FDR,title = "",filename = volFig, xlab = "logFC",names = data$Gene, show.names = "highlighted",x.cut = 1, y.cut = 0.01, highlight = data$Gene[which(abs(data$Log2FC) >=4.5)],highlight.color = "orange") +theme(legend.title = element_blank(),legend.text = element_text(size = 8, face = "bold"),legend.margin = margin(t = 0, r = 0, b = 0, l = 0, unit = "pt"),legend.direction = "horizontal",legend.position = c(0.2,0.93),panel.background = element_rect(fill = "transparent",colour = "black"),plot.background = element_rect(fill = "transparent",colour = "black"))
dev.off()

参考资料:

  1. 数据来源:TCGA数据库

  2. ggscatter帮助文档

  3. TCGAVisualize_volcano帮助文档

R绘图笔记 | 火山图的绘制相关推荐

  1. R绘图笔记 | 小提琴图与漂亮的云雨图绘制

    参考前文:R绘图笔记 | R语言绘图系统与常见绘图函数及参数 关于绘图图,前面介绍了一些: R绘图笔记 | 一般的散点图绘制 R绘图笔记 | 柱状图绘制 R绘图笔记 | 直方图和核密度估计图的绘制 R ...

  2. R绘图笔记 | 一般的散点图绘制

    可先阅读文章:R绘图笔记 | R语言绘图系统与常见绘图函数及参数 1.利用plot()绘制散点图 R语言中plot()函数的基本格式如下: plot(x,y,...) plot函数中,x和y分别表示所 ...

  3. 【R语言】——火山图绘制

    本期介绍利用R语言筛选差异表达基因及绘制火山图. 一.什么是火山图? 火山图(volcano plot)是散点图的一种,它将统计测试中的统计显著性量度(如p-value.FDR)和变化幅度相结合,从而 ...

  4. R语言旋转扇形图的绘制

    R语言旋转扇形图的绘制 数据的准备 首先绘制条形图 加上极坐标图 数据的准备 首先我们的数据要是数据框或者tibble格式 以r语言自带的数据mpg为例 mpg view(mpg) 首先绘制条形图 g ...

  5. 扩增子统计绘图5火山图:差异OTU数量及变化规律

    本网对Markdown排版支持较差,对格式不满意的用户请跳转至 或"宏基因组"公众号阅读: 写在前面 优秀的作品都有三部分曲,如骇客帝国.教父.指环王等. 扩增子系列课程也分为三部 ...

  6. R数据可视化 火山图

    一. 示例数据准备 下载:链接:https://pan.baidu.com/s/1tKR943efKOn7-TW_892KLg 提取码:wbk6 文件说明 示例数据,其中数据均为虚拟数据,与实际生物学 ...

  7. R绘图|相关性系数图

    数据是使用的是CK.LG.MG和HG四个放牧处理表层微生物扩增子数据,计算群落各微生物属丰度之间以及其与放牧.生物量等的相关性. # 1. 设置工作路径及调用R包 #knitr::opts_knit$ ...

  8. 使用R语言画火山图详细步骤

    1.导入数据包: library(ggplot2) 2.读取csv文件: data=read.table(file="c:\\PPV-vs-PPV_TVMV.csv",header ...

  9. R绘图 第十篇:绘制散点图(高级)

    散点图用于描述两个连续性变量间的关系,三个变量之间的关系可以通过3D图形或气泡来展示,多个变量之间的两两关系可以通过散点图矩阵来展示. 一,添加了最佳拟合曲线的散点图 使用基础函数plot(x,y)来 ...

最新文章

  1. 从RNA-seq结果到差异表达
  2. nero 8 简体中文版能生成真正能用的序列号的注册机
  3. Java-CAS初探
  4. 判断是否十六进制格式字符串
  5. Scrapy框架的学习(11.scrapy框架中的下载中间件的使用(DownloaderMiddlewares))
  6. C语言--关于指针两种初始化赋值操作
  7. ABP Framework 5.0 RC.1 新特性和变更说明
  8. noip模拟赛 入阵曲
  9. 用python的pandas打开csv文件_使用CSV模块和Pandas在Python中读取和写入CSV文件
  10. Java-线程中sleep()、wait()和notify()和notifyAll()、suspend和resume()、yield()、join()、interrupt()的用法和区别
  11. 秒级去重:ClickHouse在腾讯海量游戏营销活动分析中的应用
  12. Windows利用WTS API获取锁屏状态
  13. 全新版大学英语综合教程第一册学习笔记(原文及全文翻译)——7 - Kids On The Track(生死时刻)
  14. Chrome浏览器上集成IE内核方案
  15. 快手Android一面复盘
  16. 右键快捷创建mk文件
  17. 黄灯闪烁c语言程序,交通灯控制程序 需要加一个黄灯闪烁三次 求求大神
  18. 2012意大利之行3:罗马的路和车
  19. avplayer视频重复循环播放,视频重播
  20. 用友iuap低代码开发驱动商业创新

热门文章

  1. Code::Blocks环境下导入WS2_32.lib文件
  2. Oracle GoldenGate视频教程
  3. Adobe Acrobat 安装 E1935 0x80070BC9 错误 经验
  4. ERROR:error opening DLL Library错误的一个原因
  5. 【虹科分享】数字化仪的示波器功能(1)——数字化仪哪些特性能够代替示波器?
  6. _031_Redis_Redis 复制、Sentinel的搭建和原理说明
  7. java集合到线程的考试_成都汇智动力-Java SE考试编程题总结
  8. SWAT模型 | 运行Arcswat报错问题及解决办法 | forrt1:error(65): floating invalid解决方法
  9. 福州大学特大游戏制作团伙-冲刺日志(第9天11.23)
  10. RGBA、ARGB和HEX颜色格式转换javascript实现