绘制火山图&热图

绘制火山图&热图在上一篇文章中 我们已经对基因进行了差异分析 接下来我们根据结果中的 FDR 值和 FC 值筛选出上调基因和下调基因 并绘制成火山图与热图

在上一篇文章中,我们已经对基因进行了差异分析,接下来我们根据结果中的FDR值和FC值筛选出上调基因和下调基因(上调基因:基因转录成mRNA时受到正向调控,促进表达;下调基因:转录成mRNA时受到抑制,表达量减少),并绘制成火山图与热图。

第一部分:火山图

首先,加载所需的包并导入数据:

library(ggplot2) diff_stat <- read.csv("F:/公众号/图文素材/绘制火山图&热图/data.csv", header = TRUE, row.names = 1) 

在这里插入图片描述
其次,筛选上调趋势数据和下调趋势数据,对于Fold Change值和p值阈值的选择,还需在实际的分析中视情况而定,本文以|log2FC| ≥2以及FDR p-value < 0.05作为差异OTUs的判断依据:

diff_stat[which(diff_stat$FDR < 0.05 & diff_stat$logFC >= 2),'diff'] <- 'up' #上调趋势筛选 diff_stat[which(diff_stat$FDR < 0.05 & diff_stat$logFC <= -2),'diff'] <- 'dowm' #下调趋势筛选 diff_stat[!(diff_stat$diff %in% c('up', 'dowm')),'diff'] <- 'no' 

最后,我们根据判断依据,将OTUs划分为“富集”(up)、“下降”(down)以及“无差异”(no)三种水平。然后,在作图时根据预先划分的OTUs差异水平对点分别着色。火山图实质上就是一种散点图,ggplot2作为一个非常好用的作图R包,我们直接用ggplot2进行绘制:

p1 <- ggplot(diff_stat, aes(x = logFC, y = -log10(FDR))) + geom_point(aes(color = diff), size = 0.5) + scale_colour_manual(limits = c('up', 'dowm', 'no'), values = c('blue', 'red', 'gray40'), labels = c('Enriched OTUs', 'Depleted OTUs', 'No diff OTUs')) + labs(x = 'log2 Fold Change', y = '-log10 FDR p-value') 

在这里插入图片描述
我们可以对图进行美化,修改背景颜色、添加分界线、调整标签位置:

p1 <- p1 + theme(panel.grid.major = element_line(color = 'gray', size = 0.2), panel.background = element_rect(color = 'black', fill = 'transparent')) + geom_vline(xintercept = c(-2, 2), color = 'gray', linetype = 2, size = 0.5) + geom_hline(yintercept = -log10(0.05), color = 'gray', linetype = 2, size = 0.5) + theme(legend.title = element_blank(), legend.key = element_rect(fill = 'transparent'), legend.background = element_rect(fill = 'transparent'), legend.position = c(0.2, 0.9)) 

在这里插入图片描述

知识笔记

第二部分:热图

首先,加载所需的包并导入数据:

library(pheatmap) sign.gene <- read.csv("F:/公众号/图文素材/绘制火山图&热图/data.csv", header = T , row.names = 1) 

其次,筛选数据:

sign.gene.FDR <- sign.gene$FDR < 0.05 sign.gene.fc <- abs(sign.gene$logFC) > 2 sign.gene.all <- sign.gene.FDR & sign.gene.fc sign.gene.real <- sign.gene[sign.gene.all, ] 

如果样本中存在缺失值(例如:NA),我们可以用na.omit()进行删除:

sign.gene.real<-na.omit(sign.gene.real) 

最后,绘制热图,并用基因标签代替基因ID作为热图的行标签:

pheatmap(log2(sign.gene.real[,3:85]+1), labels_row = sign.gene$Symbol) 

在这里插入图片描述

也可以根据各自的需求进行美化:

pheatmap(log2(sign.gene.real[,3:85]+1), labels_row = sign.gene$Symbol, main="Heatmap", color = colorRampPalette(c("blue","white","red"))(256) ) 

在这里插入图片描述
说明:
Color参数中的256是指色阶值,也可以理解为色阶分辨率,数值越大,热图上颜色越丰富,一般设置为256。



知识笔记

总结

从热图上可以看出,所筛选出的差异基因并没有很好的区分出突变组和未突变组,所以在基因的筛选上,或者差异分析模型的选择上,需进行进一步的调整。

参考文章

获取代码

以下是我的个人公众号,该篇的数据及代码可在公众号中回复“火山图&热图”即可获得,谢谢大家支持。
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/176957.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午8:38
下一篇 2026年3月26日 下午8:38


相关推荐

  • java和c++的区别_JAVA和C++区别详解

    java和c++的区别_JAVA和C++区别详解JAVA 和 C 区别详解来源 作者 浏览 811 时间 2016 08 1014 18 标签 摘要 1 java 是解释性语言 java 程序在运行时类加载器从类路经中加载相关的类 然后 java 虚拟机读取该类文件的字节 执行相应操作 而 C 编译的时候将程序编译成本地机器码 一般来说 java 程序执行速度要比 C 慢 10 30 倍 即使采用 just in timecompilin 读取类文件

    2026年3月20日
    2
  • 【14】进大厂必须掌握的面试题-持续监控面试

    Q1。为什么需要连续监控? 我建议您遵循以下流程: 连续监视可以及时发现问题或弱点,并采取快速纠正措施来帮助减少组织的费用。持续监控提供的解决方案可解决以下三个运营准则: 持续审核…

    2020年10月23日
    395
  • PX震荡波_常用的黑客代码大全

    PX震荡波_常用的黑客代码大全一、前言前面的文章主要都是一些理论知识为主,很多读者朋友看了之后可能会有点枯燥,里面很多公式看起来也比较晦涩,今天起给大家讲一讲如何用开源飞控PX4飞好一架飞机,飞机主要以多旋翼和垂起固定翼为主。使用开源飞控PX4来调试一套无人机是一个较为复杂的过程,不过前期的电机电调选型、桨叶的配套,电池的设计这些内容都不是我擅长的内容,如果有需求的话以后有机会请我专业的朋友给大家来写一写这方面的内容。我要…

    2022年10月13日
    3
  • 解决ajax跨域问题【5种解决方案】「建议收藏」

    解决ajax跨域问题【5种解决方案】「建议收藏」什么是跨域问题?跨域问题来源于JavaScript的”同源策略”,即只有协议+主机名+端口号(如存在)相同,则允许相互访问。也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源。跨域问题是针对JS和ajax的,html本身没有跨域问题。查看浏览器开发者工具Console报错:Failedtoloadhttp://a.a.com:8080/A/…

    2022年8月24日
    12
  • 【NEW】ZBClaw(正保龙虾)即将上线!!|你的AI办公+备考提效大管家!!

    【NEW】ZBClaw(正保龙虾)即将上线!!|你的AI办公+备考提效大管家!!

    2026年3月13日
    2
  • 置换矩阵与转置矩阵之间的联系

    置换矩阵与转置矩阵之间的联系置换矩阵与转置矩阵之间的联系置换矩阵 Permutationm 矩阵的每一行和每一列的元素中只有一个 1 其余元素都为 0 不严谨的解释 转置矩阵 Transposemat 矩阵的行变成对应的列 矩阵的列变成对应的行 不严谨的直白解释 性质 置换矩阵 p 的逆等于其置换矩阵的转置 T 即 P 1 P T 举个栗子 如 3 3 的置换矩阵群 共 3 6 个 补充 4

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号