【问题标题】:How to change labels from PCA using PRcomp to sample names如何使用 PRcomp 将标签从 PCA 更改为样本名称
【发布时间】:2016-12-18 10:46:08
【问题描述】:

我试图用样本名称而不是标准数字来标记 PCA 双图。我正在使用代码:

PRCOMP1 <- prcomp(~ Max + Min + Range + Average + P10 + P20 + 
P50 + P100 +  D10 + D20 + D50 + D100 + D500, 
data = turbidity, 
na.action = na.omit, 
scale = TRUE

biplot(PRCOMP1, cex = 0.8, choices=c(1,2))

它提供了下图 - 有谁知道我可以在我的数据表中用标记为 Sample 的列标记这些点。

还有一种简单的方法可以改变箭头的颜色吗?任何帮助将不胜感激。

【问题讨论】:

    标签: r pca


    【解决方案1】:

    您可以使用 Sample 列的值命名输入数据的行:

    row.names(turbidity) <- turbidity$Sample
    

    然后,双标图上的点将标有它们的同源样本名称。

    【讨论】:

    • 注意,您需要使用代码格式化块(4 个空格)以获得比引号块更好的外观 (&gt; )
    • 嗨曼努埃尔,感谢您的回答。我能够得到 row.names 变量来计算,但这不会改变双标标签。我已经尝试将它插入到各种代码中,但无法让它改变情节中的任何内容。这需要插入其他地方还是使用额外的代码?
    【解决方案2】:

    我举个例子:

    #creating an example data frame with 5 numeric and one character variables
    mydata1 <- as.data.frame(matrix(rnorm(100, 0, 2), ncol = 5))
    mydata1$sample <- c(sapply(1:20, function(i) paste("s", i, sep = "")))
    #view of the df
     mydata1
           V1         V2           V3          V4          V5 sample
    1   1.7398057 -0.8074246  0.009826488  0.58566480  3.88569625     s1
    2  -1.3259889 -2.4359229 -1.258855445  2.65124987 -2.64137545     s2
    3  -2.3961068 -0.3108402 -1.330362255 -0.35209302 -2.39282594     s3
    

    这是一个 20 行乘 6 个变量的数据框

    biplot(prcomp(mydata1[,-6]))
    

    此语句将返回没有样本标签的图,只有数字。

    #naming rows of the df with the sample column value
    row.names(mydata1) <- mydata1$sample
    #viewing the df 
    head(mydata1)
          V1         V2           V3         V4         V5 sample
    s1  1.739806 -0.8074246  0.009826488  0.5856648  3.8856962     s1
    s2 -1.325989 -2.4359229 -1.258855445  2.6512499 -2.6413755     s2
    s3 -2.396107 -0.3108402 -1.330362255 -0.3520930 -2.3928259     s3
    #plotting
    biplot(prcomp(mydata1[,-6]))
    

    后一个图现在将使用它们的标签呈现观察结果。 让我知道这是否是您的想法。

    【讨论】:

    • FactoMineR 和 factoextra 软件包提供了 prcomp() 的替代方法,用于发出好看的分数并从 pca 加载图。
    • 嗨曼努埃尔,感谢您的加入。这就是我的想法,但它的代码:'row.names(mydata1) row.names<-.data.frame(*tmp*, value = value) 中的错误:不允许重复的 'row.names' 另外:警告消息:设置 'row.names' 时的非唯一值:'' '
    • 啊,是的,数据框的行名必须是唯一的。浊度数据集的样本列中的某些记录必须出现多次(可能是报告重复)。一个快速而肮脏的解决方案是将唯一字符附加到样本值,例如: row.names(mydata1)
    • 非常感谢。根据您的评论,我重新审视了我的数据并找到了一种标记它们的方法。非常感谢您的帮助。非常感谢。你知道如何改变双标图中的箭头颜色吗?
    • 确实是的,将 2 个颜色值传递给 col 参数,例如biplot(prcomp(mydata1[,-6]), col = c("red", "yellow")) 我让你挑颜色!
    猜你喜欢
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 2017-01-12
    • 1970-01-01
    • 2011-07-14
    • 2021-03-29
    • 2011-03-27
    • 1970-01-01
    相关资源
    最近更新 更多