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入力としてデータ フレームが必要です。Andpca1$xは行列であり、データ フレームではありません。 ggplot2美学を推測しようとしますが、この場合、PC1 スコアを PC2 スコアに対してプロットする必要があることを認識していません (行列はサンプル数 x 変数数であるため)。したがって、これらの行に沿って何かを行う必要があります(データを提供しなかったため、テストされていません):

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 に答える