0

我有一个 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"
4

1 回答 1

0

您从基本图形切换到ggplot2图形而没有进行必要的更改。 ggplot2需要一个数据框作为输入。是一个矩阵,而pca1$x不是一个数据框。 ggplot2将尝试猜测美学,但在这种情况下,它不知道您想要绘制 PC1 分数与 PC2 分数的对比(因为矩阵是 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)))
于 2013-10-09T20:52:46.947 回答