2016-05-25 4 views
1

私は基本的に変数セットのPCAを計算していますが、すべて正常に動作します。私は例として虹彩データを使用していると言いますが、私のデータは異なります。私はプロットを取得すると、いくつかのグループが、私は新しいPCAを計算せずにグループのサブセット(のための新たなプロットを作りたいので、一緒にあまりにも近くにプロットされているprcompオブジェクトのサブセットR

data(iris) 
log.ir <- log(iris[, 1:4]) 
log.ir[mapply(is.infinite, log.ir)] <- 0 
ir.groups<- iris[, 5] 
ir.pca <- prcomp(log.ir, center = TRUE, scale. = TRUE) 

library(ggbiplot) 

g <- ggbiplot(ir.pca, obs.scale = 1,var.scale = 1,groups = ir.groups, var.axes=F) 
g <- g + scale_color_discrete(name = '') 
g <- g + theme(legend.direction = 'horizontal', 
       legend.position = 'top') + theme(legend.text=element_text(size=15), legend.key.size = unit(2.5, "lines")) + theme(text = element_text(size=20)) 
ggsave("pca2.pdf", g, width=15, height=15) 

:アイリスデータは私の質問を説明するのに十分なものでなければなりませんサブセットの場合)。

ir.pcaオブジェクトのサブセットをプロットする特定のgroupsだけを選択する方法はありますか?

答えて

2

は、私はあなたが例えば、ggplot2::coord_equalで新しいグラフィカルウィンドウを定義することができると思う:

g + coord_equal(xlim=c(0, 3)) 

はないPCAから、グラフからsetosaを除外します。


アカウントにコメントを取ると、あなたはプログラムでそれを行うことができます。

# first we filter the scores 
filtered_scores <- ir.pca$x[which(iris$Species != "setosa"), ] 
# then on PC1 and PC2 
g + coord_equal(xlim=range(filtered_scores[, 1]), ylim=range(filtered_scores[, 2])) 

が、これはあなたが望んでますか?

+0

お返事ありがとうございます。しかし、私はサブセットを作るためのより簡単な方法が必要です。このように私はグラフを見て、サブセットを作る必要があります。それを行うプログラム的な方法はありますか? – ifreak

関連する問題