ggplot火山图的绘制(volcano plot)

本文详细介绍如何使用R语言的ggplot2包绘制火山图,展示基因表达数据中的显著变化。通过设置阈值筛选出差异表达基因,并用不同颜色标记,便于视觉区分。同时,文章提供了完整的代码示例和数据矩阵样本。
library(ggplot2)
volcano<-subset(data,select = c(Pvalue,Foldchange))
threshold<-as.factor((log2(volcano$Foldchange)>1.5|log2(volcano$Foldchange)<(-1.5))&volcano$Pvalue<0.05)
r03=ggplot(volcano,aes(log2(Foldchange),-log2(Pvalue),colour=threshold))+geom_point()
r04=r03+labs(title="Volcanoplot")+theme(plot.title = element_text(hjust = 0.5))+xlim(-10,10)
r05=r04+geom_vline(xintercept=c(-1.5,1.5),linetype="dotted",size=1)+geom_hline(yintercept=-log2(0.05),col="blue")

 

 


 

火山图
火山图

用于绘制火山图的数据矩阵(节选)
基因名PvalueFoldchange
ENSG000000000030.8681341219876621.2
ENSG000000004570.2560068727215371.47826086956522
ENSG000000009710.9327363068729950.961486486486487
ENSG000000010840.5121345164993270.555555555555556
ENSG000000011670.1752134315162650.291666666666667
ENSG000000016170.3315308229744471.58441558441558
ENSG000000016300.4075638176737910.588235294117647

 

 

 

 

 

### 使用ggplot2绘制火山的方法 火山是一种常用于展示基因表达差异分析结果的表,它通过散点的形式展示了每个基因的统计显著性和生物学意义。以下是基于 `ggplot2` 的火山绘制方法。 #### 准备工作 在开始绘之前,需要加载必要的库并读取数据文件。假设已有一个名为 `"V_GV_GV.anno.xls_ggplot2"` 的表格文件作为输入数据源[^1]: ```r library(ggplot2) # 读取数据 data <- read.table("V_GV_GV.anno.xls_ggplot2", header = TRUE) ``` #### 基本结构 火山的核心是一个二维坐标系,其中 x 轴表示 log2 折叠变化 (log2FoldChange),y 轴表示负对数转换后的 P 值 (-log10(P-value))。可以使用 `geom_point()` 来创建基本的散点[^2]: ```r ggplot(data, aes(x = log2FoldChange, y = -log10(pvalue))) + geom_point() ``` #### 添加参考线 为了更直观地区分显著性水平和折叠变化阈值,在中添加参考线是非常重要的。可以通过 `geom_hline()` 和 `geom_vline()` 函数来分别设置横轴和纵轴上的参考线: ```r ggplot(data, aes(x = log2FoldChange, y = -log10(pvalue))) + geom_point() + geom_hline(yintercept = -log10(0.05), linetype = "dashed", color = "red") + # 显著性阈值 geom_vline(xintercept = c(-1, 1), linetype = "dashed", color = "blue") # 折叠变化阈值 ``` #### 高亮特定数据点 如果希望突出显示某些满足条件的数据点(例如既具有较高的折叠变化又达到显著性的基因),可以在原基础上叠加一层新的几何对象,并调整其样式[^3]。下面的例子演示了如何围绕这些特殊点绘制更大的空心圆圈: ```r highlighted_data <- data[data$log2FoldChange > 1 & data$pvalue < 0.05, ] ggplot(data, aes(x = log2FoldChange, y = -log10(pvalue))) + geom_point(alpha = 0.6) + geom_point( data = highlighted_data, aes(color = factor(sign(log2FoldChange))), shape = 21, size = 4, fill = NA, stroke = 2 ) + scale_color_manual(values = c("red", "green")) + theme_minimal() ``` #### 自定义配色方案 对于更加美观的效果,还可以引入渐变色彩映射技术,使得不同区域的颜色能够平滑过渡[^4]。这里推荐利用 `RColorBrewer` 提供的一系列预设调色板来进行配置: ```r library(RColorBrewer) ggplot(data, aes(x = log2FoldChange, y = -log10(pvalue), color = pvalue)) + geom_point(size = 1.5, alpha = 0.8) + scale_color_gradientn(colors = brewer.pal(9, "Spectral"), limits = c(min(data$pvalue), max(data$pvalue))) + labs(title = "Volcano Plot with Gradient Colors", subtitle = "-log10(P-value) vs Log2 Fold Change", caption = "Source: Your Data File") + theme_classic(base_size = 14) ``` --- ### 总结 上述内容涵盖了从基础到高级的不同层次上构建火山的技术要点。无论是简单标注还是复杂视觉效果都可以借助于灵活多样的 ggplot 层次化设计思路得以实现。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值