【问题标题】:Grouping PCA plots with colours用颜色对 PCA 图进行分组
【发布时间】:2013-10-09 18:01:04
【问题描述】:

我有一个 106 x 105 的数据集,在 106 行中......73 是 a 类型,33 是 b 类型 这些列涉及 105 个不同的基因。

我已使用以下命令在数据集上运行 PCA:

pca1 = prcomp(data, scale. = TRUE)
plot(pca1$x, pch = 20) 

但是我希望绘图以红色显示类型 a 点,以蓝色显示类型 b 点,我真的不知道该怎么做

我试过这样做:

groups <- c(rep(1,73),rep(2,33))
qplot(pca1$x,colour = groups) 

但这返回了错误消息

"Error: Aesthetics must either be length one or the same length as the data.
 Problems:groups"

【问题讨论】:

    标签: r ggplot2 pca


    【解决方案1】:

    您从基本图形切换到 ggplot2 图形而没有进行必要的更改。 ggplot2 需要一个数据框作为输入。而pca1$x 是一个矩阵,而不是一个数据框。 ggplot2 将尝试猜测美学,但在这种情况下,它不知道您想要根据 PC2 分数绘制 PC1 分数(因为矩阵是 no. samples x no. variables)。所以你需要按照这些思路做一些事情(未经测试,因为你没有给我们数据):

    df <- as.matrix(pca1$x)
    df$groups <- c(rep(1,73),rep(2,33))
    str(df) # so you can see the structure and names
    qplot(x = name of 1st column, y = name of 2nd column, data = df, geom = "point", color = 'groups')
    

    给我们一些样本数据,我们可以更具体。

    更新:

    如果您想使用基本图形,则只需在原始绘图调用中添加一个颜色名称向量:

    plot(pca1$x, pch = 20, col = c(rep("red", 73), rep("blue", 33)))
    

    【讨论】:

    • 是否可以使用简单的 plot() 函数而不是 qplot 来做到这一点?这是一些示例数据: data = [Type Gene1 Gene2 Gene3 Gene4 a 2.4 4.6 8.1 1.33 a 4.4 3.1 2.6 50 b 15 -4.1 5.6 80 b -2.1 3.2 14.2 45.3]
    • 检查上面的编辑。为了将来参考,提供一些示例数据,一种简单的方法是执行dput(head(your_data_object)) 并将结果粘贴到您的问题中。
    • 太好了,非常感谢。以后会记得的。有没有办法在情节中添加一个图例来说明红点是 a 型,蓝点是 b 型?
    • 当然,请参阅?legend。传说可能会变得棘手,但你的应该是直截了当的。一般而言,使用基本图形可能需要进行大量调整才能按照人们想要的方式获得。像ggplot2 这样的包以合乎逻辑的方式为你处理了很多小事,所以如果你要做很多绘图,那么值得学习。如果我的回答解决了您的问题,请在左边的空白处寻找一个复选标记并单击它以接受答案。这样人们就知道问题已得到处理,并且我可以获得声誉积分,这样我就可以接管世界。
    猜你喜欢
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多