R语言如何绘制火山图
1.什么是火山图?
火山图是散点图的一种,它将统计测试中的统计显著性量度(如p value)和变化幅度FC相结合,从而能够帮助快速直观地识别那些变化幅度较大且具有统计学意义的数据点(基因等)。常应用于转录组,基因组,蛋白质组,代谢组等统计数据。
常见问题:
1,什么是fold change?
翻译成中文是差异倍数,简单来说就是基因在一组样品中的表达值的均值除以其在另一组样品中的表达值的均值。所以火山图只适合展示两组样品之间的比较。
2,为什么要做Log 2转换?
两个数相除获得的结果 (fold change)要么大于1,要么小于1,要么等于1。那么对应于基因差异呢?简单说,大于1表示上调(可以描述为上调多少倍),小于1表示下调(可以描述为下调为原来的多少分之多少)。大于1可以到多大呢?多大都有可能。小于1可以到多小呢?最小到0。用原始的fold change描述上调方便,描述下调不方便。绘制到图中时,上调占的空间多,下调占的空间少,展示起来不方便。所以一般会做Log 2转换。
3,什么是P-value?
统计检验获得的是否统计差异显著的一个衡量值,约定成俗的P-value<0.05为统计检验显著的常规标准。
本文我们就来讨论一下火山图是如何绘制的以及如何对其进行解读。
2.绘图前的数据准备
demo数据可以在https://www.bioladder.cn/shiny/zyp/bioladder2/demoData/Volcano/Volcano.txt下载。
必须包含3列数据,必须有行名。分别是名称列,FC列,PValue列。Marker列为非必须。如果下方的参数中选择Marker为标记方式,则需要有此列数据。
Name | FC | PValue | Marker |
---|---|---|---|
ID1 | 0.138995 | 0.007489 | 0 |
ID2 | 1.192851 | 0.801349 | 0 |
ID3 | 0.777325 | 0.001722 | 0 |
ID4 | 2.416923 | 0.039086 | 1 |
ID5 | 0.839945 | 0.746802 | 0 |
ID6 | 1.804295 | 0.001731 | 1 |
ID7 | 2.470631 | 0.016434 | 1 |
ID8 | 1.759743 | 0.009667 | 1 |
ID9 | 0.963636 | 0.923319 | 0 |
ID10 | 0.74629 | 0.510295 | 0 |
3. R语言怎么画火山图
# 加载R包,没有安装请先安装 install.packages("包名")
library(ggplot2)
library(ggrepel) #用于标记的包
# 读取火山图数据文件
data = read.delim("https://www.bioladder.cn/shiny/zyp/bioladder2/demoData/Volcano/Volcano.txt",# 这里读取了网络上的demo数据,将此处换成你自己电脑里的文件
header = T # 指定第一行是列名
)
# 建议您的文件里对应的名称跟demo数据一致,这样不用更改后续代码中的变量名称
FC = 1.5 # 用来判断上下调,一般蛋白质组的项目卡1.5
PValue = 0.05 #用来判断上下调
# 判断每个基因的上下调,往数据框data里新增了sig列
data$sig[(-1*log10(data$PValue) < -1*log10(PValue)|data$PValue=="NA")|(log2(data$FC) < log2(FC))& log2(data$FC) > -log2(FC)] <- "NotSig"
data$sig[-1*log10(data$PValue) >= -1*log10(PValue) & log2(data$FC) >= log2(FC)] <- "Up"
data$sig[-1*log10(data$PValue) >= -1*log10(PValue) & log2(data$FC) <= -log2(FC)] <- "Down"
# 标记方式(一)
# 根据数据框中的Marker列,1的为标记,0的为不标记
data$label=ifelse(data$Marker == 1, as.character(data$Name), '')
# (或)标记方式(二)
# 根据PValue小于多少和log[2]FC的绝对值大于多少筛选出合适的点
# PvalueLimit = 0.0001
# FCLimit = 5
# data$label=ifelse(data$PValue < PvalueLimit & abs(log2(data$FC)) >= FCLimit, as.character(data$Name), '')
# 绘图
ggplot(data,aes(log2(data$FC),-1*log10(data$PValue))) + # 加载数据,定义横纵坐标
geom_point(aes(color = sig)) + # 绘制散点图,分组依据是数据框的sig列
labs(title="volcanoplot", # 定义标题,x轴,y轴名称
x="log[2](FC)",
y="-log[10](PValue)") +
# scale_color_manual(values = c("red","green","blue")) + # 自定义颜色,将values更改成你想要的三个颜色
geom_hline(yintercept=-log10(PValue),linetype=2)+ # 在图上添加虚线
geom_vline(xintercept=c(-log2(FC),log2(FC)),linetype=2)+ # 在图上添加虚线
geom_text_repel(aes(x = log2(data$FC), # geom_text_repel 标记函数
y = -1*log10(data$PValue),
label=label),
max.overlaps = 10000, # 最大覆盖率,当点很多时,有些标记会被覆盖,调大该值则不被覆盖,反之。
size=3, # 字体大小
box.padding=unit(0.5,'lines'), # 标记的边距
point.padding=unit(0.1, 'lines'),
segment.color='black', # 标记线条的颜色
show.legend=FALSE)
4.BioLadder生信云平台在线绘制火山图
不想写代码?可以用BioLadder生信云平台在线绘制热图。
免费使用,注册登录后畅享40+模块。
网址:https://www.bioladder.cn/web/#/chart/19
4.1 上传文件
点击“选择”按钮上传自己的文件,支持txt,csv,xlsx,xls四种格式
4.2 调整参数
根据需求调整参数即可
- 选择名称所在的列:选项为上传文件的列名,请帮助程序选择对应的数据列
- 选择FC所在的列:选项为上传文件的列名,请帮助程序选择对应的数据列
- 选择PValue所在的列:选项为上传文件的列名,请帮助程序选择对应的数据列
- FC:输入FC值,会在图上出现辅助线,用来判断上下调
- PValue:输入PValue值,会在图上出现辅助线,用来判断上下调
- 选择标记方式:在图中添加文字标记,可以不标记蛋白,也可以根据PVAalue和FC卡值标记,还可以指定想要的点标记
- 选择颜色:可以更改上调,下调,不显著点的颜色
4.3 提交查看
上传完数据,并调好参数后,点击右上方“提交”按钮,图像会出现在左侧。如果没有上传自己的数据,会使用默认的demo数据绘图。
4.4 下载
首先,挑选自己想要的格式有png,jpg和pdf供选择,接着调整图片的宽,高和分辨率(注:这里的宽高比会反馈到左上的绘图区),最后点击“Download”下载按钮。
5. 火山图结果解读
整体来看,基因有上调就有下调,图整体是以X=0的垂线左右对称的。如果数据中大部分点都是上调或下调,成偏态分布时,需考虑标准化步骤没有处理好,或数据存在批次效应,导致数据存在系统偏差。图的左上角和右上角是差异基因集中的地方,也是我们关注的重点。
该火山图的y轴是-log10(Pvalue),因此数值越高说明Pvalue越小即越显著。横坐标是Log2 fold change,即对fold change取log2,所以越靠两侧的点(每个点代表一个基因),其基因表达量上调或者下调幅度越大。
一般来说在差异基因分析过程中,我们通常认为pvalue小于0.05且foldchange的绝对值大于2为差异基因。当然在差异基因数量过多的时候,我们可以调整筛选标准以获得相对适合数量的差异基因再进行下游的富集分析,比如要求pvalue小于0.001,或者要求foldchange的绝对值大于5等等。当差异基因数量过少的时候,我们可以考虑将foldchange的绝对值变为1.5,或者考虑选择pvalue小于0.05。
而图中的虚线就是根据自己的筛选标准确定添加。图中的基因标注可以通过上传文件中的maker列数据或者限定FC和P值的大小标注。
6.BioLadder生物信息在线分析可视化云平台
网址:https://www.bioladder.cn/
BioLadder目前上线了生物学分析最常用的40多个模块,主要包括以下四类:
**数据可视化:**箱线图,南丁格尔玫瑰图,韦恩图,UpSet图,饼图,词云图,核密度图,小提琴图,弦图,柱形图等
**组学数据分析:**序列的多重比对,表达数据的CV曲线图,PCA,T-SNE,热图,相关性热图等,趋势分析的mFuzz,差异分析的火山图,富集分析的气泡图,修饰位点上下游模体分析的seqLogo,Motif热图等
**功能分析:**GO弦图,相互作用网络图,富集分析
**数据预处理:**归一化,补值,FDR校正,长宽表互换等
数据分析:**序列的多重比对,表达数据的CV曲线图,PCA,T-SNE,热图,相关性热图等,趋势分析的mFuzz,差异分析的火山图,富集分析的气泡图,修饰位点上下游模体分析的seqLogo,Motif热图等
**功能分析:**GO弦图,相互作用网络图,富集分析
**数据预处理:**归一化,补值,FDR校正,长宽表互换等