You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言EnhancedVolcano绘制火山图设置p=0.05截断线报错求解

问题原因
  • 语法报错:R中科学计数法格式要求e后的指数必须是整数,你写的10e-2.5在e后使用小数指数,不符合R的数值书写规则,因此触发数值常量错误。
  • 截断线位置偏差:你之前设置的pCutoff = 10e-2实际对应的p值是0.1,经火山图默认的-log10(p)转换后y轴位置为1,和你需要的y=1.3位置不匹配,因此线的位置不对。
解决方案

EnhancedVolcano的y轴默认对输入的p值做-log10()转换,你需要的y=1.3位置对应的原始校正p值为10^(-1.3)(约为0.05,正好对应常用的p=0.05阈值),直接通过指数运算计算该值传给pCutoff参数即可,不需要硬写不符合语法的科学计数法:

library(EnhancedVolcano)

# 读取示例数据
all_genes <- structure(list(X = 1:14, Gene.ID = c("A", "B", "C", "D", "E",  "F",
"G", "H", "I", "J", "K", "L", "M", "N"), logFC = c(1.5,
0.17212922, 0.145542174, 0.304348578, 0.124636936, 0.247841044,
0.160818268, 0.123741518, 0.148530876, 0.148960225, 0.114135472,
-0.147118359, 0.095549291, 0.138521594), AveExpr = c(5.426424957,
4.289728233, 4.901134193, 4.742864705, 5.447030699, 4.539641767,
4.650750102, 5.901020922, 5.365944907, 5.818788787, 4.837214384,
7.017656548, 4.531897822, 5.192294452), t = c(6.15098624, 5.452898247,
4.979246654, 4.949519834, 4.818043279, 4.73403717, 4.701937811,
4.522692175, 4.518518374, 4.281900066, 4.247981727, -4.194421592,
4.10350597, 4.088357671), p.value = c(1.27e-09, 6.8e-08, 7.99e-07,
9.26e-07, 1.77e-06, 2.65e-06, 3.09e-06, 7.13e-06, 7.27e-06, 2.1e-05,
2.44e-05, 3.07e-05, 4.53e-05, 4.83e-05), adjust.p.value = c(1.64e-05,
0.000438854, 0.002987004, 0.002987004, 0.004558267, 0.005687325,
0.005687325, 0.010422933, 0.010422933, 0.027128901, 0.028601707,
0.033061438, 0.04452146, 0.04452146), B = c(11.2786109, 7.664706936,
5.439886439, 5.306497286, 4.725465519, 4.361868581, 4.224515919,
3.473656504, 3.45649938, 2.508304771, 2.376338878, 2.169980059,
1.825392322, 1.76867543)), class = "data.frame", row.names = c(NA,
-14L))

# 绘制火山图,p值截断线精准对应y=1.3位置
EnhancedVolcano(all_genes, 
                x = "logFC", 
                y = "adjust.p.value", 
                lab = all_genes$Gene.ID,
                pCutoff = 10^(-1.3),
                FCcutoff = 1)

如果需要自定义截断线的样式(比如颜色、线型),也可以在绘图代码末尾叠加ggplot2图层手动添加横线,位置完全精准可控:

EnhancedVolcano(all_genes, 
                x = "logFC", 
                y = "adjust.p.value", 
                lab = all_genes$Gene.ID,
                pCutoff = 10^(-1.3),
                FCcutoff = 1) +
  # 手动叠加y=1.3位置的水平红色虚线
  geom_hline(yintercept = 1.3, linetype = "dashed", colour = "red", linewidth = 1)

内容的提问来源于stack exchange,提问作者Adam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 05:36:25