R语言中使用prcomp执行PCA分析时无法将绘图标签从行号替换为站点名称的问题求助
解决PCA双标图不显示站点名称的问题
问题出在你用tibble设置行名的方式上——tibble本身不推荐使用行名(这也是你看到Setting row names on a tibble is deprecated警告的原因),直接用row.names()赋值的操作并没有真正修改数据对象的行名属性,只是R Studio环境面板的显示给了你错觉。
下面给你两种可行的解决方案:
方案1:用tidyverse工具将Site列转为行名(推荐)
tibble设计时就更倾向于用单独的列存储标识信息,如果你确实需要行名,可以用column_to_rownames()函数(来自dplyr/tidyverse)来完成,这个操作会将指定列转为行名并删除该列:
library(tidyverse) # 将Site列转为行名,同时移除原Site列 tf4 <- tf4 %>% column_to_rownames(var = "Site") # 运行PCA(此时tf4只剩sp1-sp6列) model <- prcomp(tf4, scale = TRUE) # 绘制双标图,此时会自动使用行名(站点名称)作为标签 biplot(model)
方案2:保留Site列,手动指定双标图标签
如果你不想修改原数据结构,可以直接在biplot()函数中通过labels参数指定站点名称,不用依赖行名:
# 运行PCA时排除Site列 model <- prcomp(tf4[, -7], scale = TRUE) # 绘制双标图时手动传入Site列作为标签 biplot(model, labels = tf4$Site)
这两种方法都能让双标图正确显示你的站点名称,解决之前行号显示的问题。
内容的提问来源于stack exchange,提问作者Rachel
相关产品推荐
相关产品推荐

