双阈值的火山图

双阈值的火山图标准的火山图 双阈值的火山图 耶比较常见咯 比如这篇文章里 https pubmed ncbi nlm nih gov 其实也没啥 就是设置了两组 logFC 和 Pvalue 的阈值 把中间的基因用浅一点的颜色表示出来 我试了同一颜色设置不同透明度 结果失败咯 因为点太密集 设置了透明度 颜色耶会叠加 不好看 1 示例数据随便拿个芯片数据过来 做完他的差异分析 差异分析结果表格 if require tinyarray devtools install github x

双阈值的火山图

其实也没啥。就是设置了两组logFC和Pvalue的阈值,把中间的基因用浅一点的颜色表示出来。我试了同一颜色设置不同透明度,结果失败咯。因为点太密集,设置了透明度,颜色耶会叠加,不好看。

1.示例数据

随便拿个芯片数据过来,做完他的差异分析,差异分析结果表格。

if(!require(tinyarray))devtools::install_github("xjsun1221/tinyarray") library(tinyarray) library(stringr) geo = geo_download("GSE4107") Group = factor(ifelse(str_detect(geo$pd$title,"control"),"control","treat")) ids = idmap(geo$gpl) dcp = get_deg_all(log2(geo$exp+1),Group,ids) [1] "743 down genes,1908 up genes" 

这个10列的表格就是limma差异分析结果,后面添加了几列。

head(dcp$deg) logFC AveExpr t P.Value adj.P.Val B probe_id 1 6. 7. 15. 9.e-14 2.091036e-09 19.58011 _at 2 5. 11. 15. 1.e-13 2.091036e-09 19.43798 _at 3 2. 13. 11. 5.019678e-11 3.e-07 14.57411 _s_at 4 4. 7. 10. 2.e-10 1.e-06 13.19062 _at 5 3. 9. 10. 3.e-10 2.e-06 12.86560 _s_at 6 5.024796 6. 9. 8.e-10 4.e-06 12.13533 _at symbol change ENTREZID 1 FOSB up 2354 2 FOS up 2353 3 DUSP1 up 1843 4 CCDC3 up 83643 5 EGR1 up 1958 6 RERGL up 79785 

2.常规火山图

如果要常规的火山图,已经有啦。我在写这个tinyarray包的时候,顺便把画图的代码也加进去了。仅作简化代码用哦。

dcp$plots 

双阈值的火山图

3.双阈值的火山图

每句代码都简单,实际应用起来略复杂,搞起来。

library(ggplot2) logFC_t1 = 1 P.Value_t1 = 0.05 logFC_t2 = 2 P.Value_t2 = 0.01 dat = dcp$deg library(dplyr) k1 = with(dat,logFC > logFC_t2 & P.Value 
      logFC_t1 & P.Value < P.Value_t1 );table(k3) k3 FALSE TRUE 17842 1908 k4 = with(dat,logFC < -logFC_t1 & P.Value       

双阈值的火山图

# 加标签 for_label <- dat %>% filter(symbol %in% c("FOSB", "FOS", "DUSP1")) p + geom_point(size = 3, shape = 1, data = for_label) + ggrepel::geom_label_repel( aes(label = symbol), data = for_label, color="black" ) 

双阈值的火山图

只要顺利得到了差异分析结果表格,上面的图应该是很轻松搞定咯。如果你仔细看了代码,没太整明白case_when的话,分享下这个函数的核心思想,应该会有茅塞顿开的感觉。可以看到我写的k1 k2 k3 k4 是两组阈值得到差异基因的条件,为什么不是分更多种情况讨论?这是因为case_when函数的条件之间有优先级顺序哦,不满足第一个条件,才往下看第二个条件,以此类推。就像ggplot2的代码也有先后顺序一样!hadly大佬永远的神 ~

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

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

(0)
上一篇 2026年3月26日 下午4:35
下一篇 2026年3月26日 下午4:36


相关推荐

发表回复

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

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