R语言prcomp结合ggbiplot绘图报错invalid 'rot' value问题求助
报错原因分析
- 核心原因:你当前PCA输入的是18041个基因的全转录组矩阵,
ggbiplot默认开启var.axes = TRUE参数,会自动绘制所有变量(即所有基因)的载荷箭头及对应基因名标签。上万级别的文本标签在计算旋转角度时数值溢出,直接触发invalid 'rot' value报错。 - 次要错误:你执行
df2 <- assay(df2)后得到的是纯数值表达矩阵,仅包含基因表达量,不存在stage列,你传入的groups=factor(df2$stage)实际是NULL值,也会导致分组逻辑异常。
修复方案
- 修正分组参数的来源,同时关闭变量载荷绘制即可正常出图,参考修改后代码:
# 分组从原始DESeq2对象的元数据中取,不要从纯表达矩阵df2取 plot <- ggbiplot(pca2, groups=factor(dds$stage), alpha=1, varname.size=0.2, ellipse = TRUE, circle = TRUE, labels =row.names(df2), var.axes = FALSE) # 关闭基因载荷箭头和标签绘制,避免上万条元素溢出 plot
- 如果你需要展示部分基因的载荷信息,建议先筛选高变基因/目标基因子集后再做PCA绘图,避免一次性加载上万条变量标签。
- 额外说明:vst归一化后的矩阵本身已经完成方差稳定转换,
prcomp设置scale=FALSE的操作是正确的,不需要额外调整。
内容的提问来源于stack exchange,提问作者Aggelos Kozonakis
相关产品推荐
相关产品推荐

